• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

也谈谈Asp.Net中的几种导航方式

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
关于对导航方式的论述,可以参考:几种页面导航方式
Asp.Net中存在以下几种导航方式:
导航方法 用途
HyperLink Server控件 导航到另一个页面
Response.Redirect() 使用代码导航到另一个页面。功能同HyperLink相同
Server.Transfer() 结束本页面,执行另一个页面。只对.aspx页面有效
Server.Execute() 保留显示本页面内容的同时,执行其他页面,2个页面的显示信息会显示在一起。只对.aspx页面有效
Window.Open() 在客户端新开一个页面

下面详细说明:
HyperLink 控件:
接收用户鼠标的点击事件,导航到HyperLink.NavigateUrl属性设置的页面。基本用途就是导航,自身也带有Load,UnLoad,Init,PreRender事件,执行特定的操作。
如在一个页面的HyperLink控件的Unload事件中定义Application变量name:
    private void HyperLink1_Unload(object sender, System.EventArgs e)
        }
然后在导航页面中读取此变量:
    private void Page_Load(object sender, System.EventArgs e)
        }

原文中说,HyperLink控件不能执行任何Server端事件,但是上面的代码确实执行了Server端代码。

Response.Redirect():

通过代码实现导航目的,会产生一个Round-Trip过程同用户交互,同时可以通过字符串传递参数,如:

private void LinkButton1_Click(object sender, System.EventArgs e)
}

Server.Transfer():
同HyperLink和Response.Redirect()相似,不同在于:
Server.Transfer()可以在从源页面到目标页面的传递过程中,保留源页面的一些信息。将Transfer()的第2个参数设为True,可以使源页面的ViewState,QueryString,甚至过程信息在目标页面可以保留。
原文说:如过使用这项功能,需要把页面的EnableViewStateMac值设为False,即不执行Hash操作。默认状况下,Asp.Net 会把ViewState的值作Hash处理,只有把EnableViewState=False,关闭此Hash功能,才可以使后续页面读取ViewState的信息。但是经过测试,将EnableViewState=true,对于读取ViewState的信息没有影响。ViewState中的字符默认会被编码为Base64格式的,虽然不易读,但是没有加密。在machine.config中可以控制加密方式,加密操作需要在Machine层完成,比较消耗系统资源。 如果根据machineKey执行加密,那么就不可以直接读取ViewState的值。
例子:
新建立页面WebForm1.aspx,加入TextBox控件,名称为tb,加入Button控件,名称Button1,tb.Text="test",
private void Button1_Click(object sender, System.EventArgs e)
}
建立WebForm2.aspx,
    private void Page_Load(object sender, System.EventArgs e)
        }

通过测试,WebForm2会显示test,说明读取到了WebForm1.aspx的ViewState。

Server.Execute():
可以在不离开当前页面的同时,执行其他页面。这个方法可以在当前页面中显示其他页面的执行结果。
原文中同样要求把EnableViewStateMac=false,但是测试结果表明,这个选项的值对Execute()的执行没有影响。
通过使用
System.IO.StringWriter writer=new System.IO.StringWriter();
            Server.Execute(
"WebForm2.aspx",writer);
            Response.Write(writer.ToString());
WebForm1会显示WebForm2的各种控件和执行结果。
WebForm2中的事件可以执行,如果是引发Post-back的控件的事件,会清除WebForm1的控件。

Window.Open():
这个方法存在于脚本文件,目的是使用户浏览器新开窗口,只能在客户端执行。
如建立如下Html Button:
<INPUT style="Z-INDEX:
102; LEFT: 55px; WIDTH: 81px; POSITION: absolute; TOP: 156px; HEIGHT:
24px"
 onclick="window.open('webform2.aspx')" type="submit"
value
="New Window">

可以新开窗口,指向WebForm2.aspx页面。

参考:
Ms Develop Web Application with Microsoft Visual Basic.Net  and Microsoft Visual C#.Net 
2002

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap