ASP.NET 2.0 读书笔记 圣殿 之 跨网页公布
2007-04-22 15:26
411 查看
在ASP.NET 2.0使用以下四种方式:
HyperLink
Response.Redirect()
Server.Transfer()
Cross-Page Posting
以下只说第四种,即“跨网页公布”
区别于PostBack(只是自己ReCall自己),不再需要URL中的参数QueryString
方法1:使用PreviousPage.FindControl访问来源网页A的空间属性属性。
A页面有TextBoxA,在A页面的Button上设制PostBackUrl属性,为B页面。
在B加载页面时:
protected void Page_Load(object sender, EventArgs e)
public partial class Default3 : System.Web.UI.Page
protected void Page_Load(object sender, EventArgs e)
注意:一个页面只能由一个@PreviousPageType标签。即源与目标是一一对应的。
方法3:使用@Reference,通过强类型来访问来源网页A中的Public成员。
@Reference是通过将PreviousPage转换成与目标网页相同的类型,即强类型,这就不只可以访问属性了,还可以访问字段,方法等等,只要是public的。
在目标B页面中添加
<%@ Reference VirtualPath="~/A.aspx" %>
那么在B中,就可以访问A这个页面类——基于文件系统的WebSite,其下的类是没有命名空间的,所以不能相互访问。
假设源页面A是这样的:
public partial class Default5 : System.Web.UI.Page
protected void Page_Load(object sender, EventArgs e)
<%@ Reference VirtualPath="~/Default5.aspx" %>
<%@ Reference VirtualPath="~/Default3.aspx" %>
B相应的加载过程:
protected void Page_Load(object sender, EventArgs e)
{
try
{
if (PreviousPage != null)
{
if (PreviousPage.IsCrossPagePostBack)
{
//将PreviousPage转换成与源网页相同的强类型
Default3 sourcePage = (Default3)PreviousPage;
Response.Write(sourcePage.A);
}
}
}
catch
{
}
try
{
if (PreviousPage != null)
{
if (PreviousPage.IsCrossPagePostBack)
{
//将PreviousPage转换成与源网页相同的强类型
Default5 sourcePage = (Default5)PreviousPage;
Response.Write(sourcePage.GetA());
}
}
}
catch
{
}
}
当然,也可以使用反射,从而写得不这么麻烦。
还有PreviousPage的IsCrossPagePostBack属性,判断页面是否来自“跨网页公布”。(异曲同工于IsPostBack)
“跨网页公布”原理:
1.用户在源页面A按下Button后,根据其PostBackUrl属性,导向目标页面B
2.B页面将A页面的ViewState另外存储一份后,销毁A页面的ViewState
3.当在B页面中使用PreviousPage时,系统会自动初始化与A页面同一类型的Page,将其赋予PreviousPage,并在B页面Load_Complete阶段将原先保存的A页面ViewState还原给PreviousPage
4.使用PreviousPage这个与源页面A相同的实体
可以看到,“跨网页公布”的成本是很高的。
HyperLink
Response.Redirect()
Server.Transfer()
Cross-Page Posting
以下只说第四种,即“跨网页公布”
区别于PostBack(只是自己ReCall自己),不再需要URL中的参数QueryString
方法1:使用PreviousPage.FindControl访问来源网页A的空间属性属性。
A页面有TextBoxA,在A页面的Button上设制PostBackUrl属性,为B页面。
在B加载页面时:
protected void Page_Load(object sender, EventArgs e)
public partial class Default3 : System.Web.UI.Page
protected void Page_Load(object sender, EventArgs e)
注意:一个页面只能由一个@PreviousPageType标签。即源与目标是一一对应的。
方法3:使用@Reference,通过强类型来访问来源网页A中的Public成员。
@Reference是通过将PreviousPage转换成与目标网页相同的类型,即强类型,这就不只可以访问属性了,还可以访问字段,方法等等,只要是public的。
在目标B页面中添加
<%@ Reference VirtualPath="~/A.aspx" %>
那么在B中,就可以访问A这个页面类——基于文件系统的WebSite,其下的类是没有命名空间的,所以不能相互访问。
假设源页面A是这样的:
public partial class Default5 : System.Web.UI.Page
protected void Page_Load(object sender, EventArgs e)
<%@ Reference VirtualPath="~/Default5.aspx" %>
<%@ Reference VirtualPath="~/Default3.aspx" %>
B相应的加载过程:
protected void Page_Load(object sender, EventArgs e)
{
try
{
if (PreviousPage != null)
{
if (PreviousPage.IsCrossPagePostBack)
{
//将PreviousPage转换成与源网页相同的强类型
Default3 sourcePage = (Default3)PreviousPage;
Response.Write(sourcePage.A);
}
}
}
catch
{
}
try
{
if (PreviousPage != null)
{
if (PreviousPage.IsCrossPagePostBack)
{
//将PreviousPage转换成与源网页相同的强类型
Default5 sourcePage = (Default5)PreviousPage;
Response.Write(sourcePage.GetA());
}
}
}
catch
{
}
}
当然,也可以使用反射,从而写得不这么麻烦。
还有PreviousPage的IsCrossPagePostBack属性,判断页面是否来自“跨网页公布”。(异曲同工于IsPostBack)
“跨网页公布”原理:
1.用户在源页面A按下Button后,根据其PostBackUrl属性,导向目标页面B
2.B页面将A页面的ViewState另外存储一份后,销毁A页面的ViewState
3.当在B页面中使用PreviousPage时,系统会自动初始化与A页面同一类型的Page,将其赋予PreviousPage,并在B页面Load_Complete阶段将原先保存的A页面ViewState还原给PreviousPage
4.使用PreviousPage这个与源页面A相同的实体
可以看到,“跨网页公布”的成本是很高的。
相关文章推荐
- ASP.NET 2.0 读书笔记 圣殿 之 HtmlHead & HtmlMeta
- ASP.NET 2.0 读书笔记 圣殿 之 玩转GridView(1)
- 读书笔记:《精通ASP.Net 2.0企业级项目开发》—— 获取网站中其他网页的内容
- ASP.NET 2.0 读书笔记 圣殿 之 Client端Script的增强与改良
- ASP.NET 2.0 读书笔记 圣殿 之 玩转GridView(2)
- 圣殿祭司:ASP.NET 2.0 开发详解——使用C#——全国购书地址一览表
- ASP.NET 2.0 中跨网页提交的三种方法
- 《Asp.Net 2.0 揭秘》读书笔记(十二)
- 圣殿祭司:ASP.NET 2.0 开发详解——使用C#——全国购书地址一览表
- ASP.NET 2.0中构造个性化网页
- 《Asp.Net 2.0 揭秘》读书笔记(九)
- 《Asp.Net 2.0 揭秘》读书笔记(二)
- ASP.NET 2.0 中跨网页提交的三种方法
- ASP.NET 2.0揭秘读书笔记七——使用用户配置文件Profile
- ASP.NET 2.0 中跨网页提交的三种方法
- 《asp.net 2.0 开发指南》读书笔记之四 4.6 C# 2.0 新特性
- 《asp.net 2.0 开发指南》读书笔记之二 流程控制(4.4 )
- 圣殿祭司:ASP.NET 2.0 开发详解——使用C#——全国购书地址一览表
- 圣殿祭司:ASP.NET 2.0 开发详解——使用C#——全国购书地址一览表
- 梅花雪Web Calendar ver 3.0 网页日历在asp.net 2.0的应用