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;
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值