跨网页公布技术
特性:
1、可以将控件传输到呈现的新网页,
2、只重新导向至原来网页位于相同的web应用程序的目标网页
3、可以让你从来源网页读取值和公用属性
4、不要用目标网页的信息更新浏览器的信息,按浏览器中的上一步会造成无法预期的行为
用法:
在CrossPageSource.aspx中的Button的PostBackUrl属性设置为:CrossPageTarget.aspx
在CrossPageTarget.aspx的page_load事件中添加如下程序:
protected void Page_Load(object sender ,EventArgs e)
{
TextBox txtUsername=(TextBox)PreviousPage.FindControl("txtUsername");
txtMst.Text="你输入的名字是:"+txtUsername.Text;
}
跨网页公布技术必须依附在Button按钮的PostBackUrl属性之上,且 只支持Button,LinkButton,ImageButton这三种类型,
从来源网页取得公共属性值,
1、在CrossPageTarget.aspx中设置<%@PreviousPageType VirtualPath="~/CrossPageSource.aspx"%>
使用时:
txtMsg.Text=PreviousPage.getUserName;
2、使用<%@Reference VirtualPath="~/CrossPageSource.aspx"%>
读取时:
使用@Reference 具有强类型的特性,好处是可以通过Intellisense来直接访问
protected void Page_Load(object sender, EventArgs e)
{
//将PreviousPage转换成与源网页相同的强类型
ReferenceSource sourcePage = (ReferenceSource)PreviousPage;
txtMsg.Text = "您输入的名字是:" + sourcePage.getUserName + " , " + sourcePage.city;
}
IsPostBack判断
跨网页公布必须使用IsCrossPageePostBack这个属性来判断因此有下面的程序:
protected void Page_Load(object sender, EventArgs e)
{
//将PreviousPage转换成与源网页相同的强类型
if (PreviousPage != null) //这里的检查时必须的,大家在用跨网页公布机制是务必做到这个程度,以保障程序的完整性
{
if (PreviousPage.IsCrossPagePostBack)
{
IsCrossPageSource sourcePage = (IsCrossPageSource)PreviousPage;
txtMsg.Text = "您输入的名字是:" + sourcePage.getUserName + " , " + sourcePage.city;
}
}
}
跨网页公布的原理:
1、来源网页跨网页公布到目标网页时通过Button按钮的PostBackUrl属性来指定目标网页,在用户按下Button后会导向目标网页
2、目标网页将来源网页的ViewState另外存储一份后,则将来源网页的ViewState所存储的状态会被废弃掉,
3、当目标网页用到previouspage对象时,系统会自动初始化与来源网页同一类型的Page(PreviewPage),并且在目标页的Page_Complete阶段
将原先存储保留下来的ViewState还原到PreviousPage
4、而previouspage表示一个与来源网页相同的新生实体,并且注入了原先所保留的ViewState状态,所以这就是为什么在目标也可以访问到
来源页的原因
如果ViewState很庞大是代表存储及还原的系统成本很高,故跨网页公布与QueryString单纯传参数两者的使用是请自行拿捏