在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Asp.Net中存在以下几种导航方式:
下面详细说明: 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端代码。 通过代码实现导航目的,会产生一个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)
}
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()); 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 |
请发表评论