`

PostBackUrl 用户控件页面传值总结

 
阅读更多

PostBackUrl 用户控件页面传值总结
今天在调试邮件发送的时候,发现了Get传递数据的最大值问题,查看

了有关资料说Get方式最大的传递值为2k(包括URL字符)。
因此只能修改代码,换别的方式。本来计划使用POST方式,但是Post方

式无法获取用户控件中的信息,所以此方法作罢。

以下介绍使用Asp.Net 2.0的新特性PostBackUrl进行页面见传值。

一 调用普通控件信息
1 源页面
<asp:Button ID="Button1" Runat="server"

Text="PostToAnotherPage" PostBackUrl="~/Test.aspx" />
2 被提交的页面
如果是普通的控件只需要以下方法即可:
if (PreviousPage != null)
{
TextBox textBox1 = (TextBox)

PreviousPage.FindControl("TextBox1");
Response.write(textBox1.Text );
}

二 调用用户控件信息
1 继承方式
(1) PostDataBase.cs
using System.Collections.Generic;

/// <summary>
/// PostDataUrl方式页面传值抽象类
/// </summary>
public abstract class PostDataBase : System.Web.UI.UserControl
{
public abstract string CheckedORGString { get;}

public abstract string CheckedORGNameString { get;}

public abstract List<string> CheckedOrgCodeList { get;}

public abstract List<string> CheckedOrgNameList { get;}
}

(2) UserControl.ascx.cs代码
public partial class Controls_UserControl :PostDataBase
{
/// <summary>
/// 获取TreeView选中的单位代码
/// </summary>
public override string CheckedORGString
{
get
{
//Some Codes
}
}

/// <summary>
/// 获取TreeView选中的单位名称
/// </summary>
public override string CheckedORGNameString
{
get
{
//Some Codes
}
}

/// <summary>
/// 获取TreeView选中的单位代码
/// </summary>
public override List<string> CheckedOrgCodeList
{
get
{
//Some Codes
return itemList;
}
}

/// <summary>
/// 获取TreeView选中的单位名称
/// </summary>
public override List<string> CheckedOrgNameList
{
get
{
//Some Codes
return itemList;
}
}
}
(3) Test.aspx.cs代码
/// <summary>
/// 获取父页面的单位信息
/// </summary>
protected string OrgCodes
{
get
{
//return PreviousPage.GetOrgCodes;//方式一
if (ViewState["OrgCodes"] != null)
{
return ViewState["OrgCodes"].ToString();
}

if (PreviousPage == null)
{
return string.Empty;
}
PostDataBase hid = PreviousPage.Form.FindControl

("ContentPlaceHolder1").FindControl("orgTree") as

PostDataBase;
if (hid == null)
{
return string.Empty;
}
else
{
ViewState["OrgCodes"] = hid.CheckedORGString;
return hid.CheckedORGString;
}
}
}

注意:
如果有模版页嵌套则使用
PostDataBase hid = PreviousPage.Form.FindControl

("ContentPlaceHolder1").FindControl("orgTree") as

PostDataBase;
如果没有则使用
PostDataBase hid = PreviousPage.Form.FindControl("orgTree") as

PostDataBase;

2 实例类方式
(1) Source.aspx.cs代码
定义获取用户控件数据的属性
public string GetOrgCodes
{
get
{
string orgCodeList=orgTree.CheckedORGString;
if (orgCodeList.Trim().Length==0)
{
return string.Empty;
}
else
{
return orgCodeList;
}
}
}

(2) Test.aspx页
<%@ PreviousPageType VirtualPath="Source.aspx" %>
使用PreviousPageType注册后,可以再后台代码中使用智能提示(如果

没有智能提示,编译后再试就有了)

(3) Test.aspx.cs代码
/// <summary>
/// 获取父页面的单位信息
/// </summary>
protected string OrgCodes
{
get
{
return PreviousPage.GetOrgCodes;
}
}

分享到:
评论

相关推荐

    PostBackUrl(2.0)

    通过PostBackUrl传参

    ASP.Net中表单POST到其他页面的方法分享

    @ Page EnableViewStateMac=”false” %&gt;但这样做不是很安全,其实asp.net 2.0 还提供了一种方式提交到其他页面,服务器按钮控件提供了一个属性:PostBackUrl,这样写 代码如下:button1.PostBackU

    ASP.NET笔记之页面跳转、调试、form表单、viewstate、cookie的使用说明

    1、页面跳转: (1 服务器传输  server.Transer(//www.jb51.net);在定向到新页面后,还是会显示原来的URL,浏览器返回不会退回到原页面,历史记录也不会记录。  应用于完整的控制传输,例如安装向导。 (2 超链接 ...

    blitline-resizer:使用 Blitline 调整图像大小 - https

    Blitline Image Resizer 使用调整图像。 获取一组图像 url 和一组大小,并将所有调整大小的图像复制到 Amazon S3 存储桶。... 如果您没有设置options.postbackUrl那么它应该为每个图像返回一个结果数

    asp.net简单程序

    &lt;asp:LinkButton ID="LinkButton3" runat="server" PostBackUrl="~/guestbook.aspx"&gt;查看留言&lt;/asp:LinkButton&gt;&lt;/td&gt; ; height: 23px"&gt; 留言标题:"&gt;&lt;/asp:Label&gt;&lt;/td&gt; ; height: 23px"&gt; ...

Global site tag (gtag.js) - Google Analytics