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传参
@ Page EnableViewStateMac=”false” %>但这样做不是很安全,其实asp.net 2.0 还提供了一种方式提交到其他页面,服务器按钮控件提供了一个属性:PostBackUrl,这样写 代码如下:button1.PostBackU
1、页面跳转: (1 服务器传输 server.Transer(//www.jb51.net);在定向到新页面后,还是会显示原来的URL,浏览器返回不会退回到原页面,历史记录也不会记录。 应用于完整的控制传输,例如安装向导。 (2 超链接 ...
Blitline Image Resizer 使用调整图像。 获取一组图像 url 和一组大小,并将所有调整大小的图像复制到 Amazon S3 存储桶。... 如果您没有设置options.postbackUrl那么它应该为每个图像返回一个结果数
<asp:LinkButton ID="LinkButton3" runat="server" PostBackUrl="~/guestbook.aspx">查看留言</asp:LinkButton></td> ; height: 23px"> 留言标题:"></asp:Label></td> ; height: 23px"> ...