Essential ASP.NET 读书笔记--WebForm

客户端服务器通过WebForm进行的交互
CSInteractive.JPG



由于http连接是没有状态的,所以页面的状态将无法通过连接来保存;而asp.net就提出了一种方案来保存页面的当前状态,那就是使用了ViewState的页面将会在_ViewState这个隐藏的64位编码的字符串中储存所有页面元素的最后值,具体实例如下:

ViewState.JPG

在asp.net中,我们可以惊讶的发现我们居然可以使用和winform一致的事件处理机制;就如下例所示


<!?color.aspx ?gt; <%@ Page Language="C#" %> <html> <script runat=server> protected void OnRed(object src, EventArgs e) { _color.Style["background-color"] = "Red"; } protected void OnGreen(object src, EventArgs e) { _color.Style["background-color"] = "Green"; } protected void OnBlue(object src, EventArgs e) { _color.Style["background-color"] = "Blue"; } protected void Page_Init(object src, EventArgs e) { _redButton.ServerClick += new EventHandler(OnRed); _greenButton.ServerClick += new EventHandler(OnGreen); _blueButton.ServerClick += new EventHandler(OnBlue); } protected void Page_Load(object src, EventArgs e) { if (!IsPostBack) { _color.Style["background-color"] = "Red"; _color.Style["width"] = "100"; _color.Style["height"] = "100"; } } </script> <body> <form runat=server> <h2>ASP.NET color page</h2> <div id=_color runat=server /> <p> <input type=button id=_redButton value="Red" runat=server /> <input type=button id=_greenButton value="Green" runat=server /> <input type=button id=_blueButton value="Blue" runat=server /> </p> </form> </body> </html>

但是实现这样的机制,是需要付出代价的;asp.net在后台完成了大量的工作;
同样使用hidden字段,asp.net使用javascript完成对不同控件事件的不同状态post到服务器的工作:


<html><body> <form name="_ctl0" method="post" action="color.aspx" id="_ctl0"> <input type="hidden" name="__EVENTTARGET" value="" /> <input type="hidden" name="__EVENTARGUMENT" value="" /> <input type="hidden" name="__VIEWSTATE" value="dD...==" /> <script language="javascript"> <!? function __doPostBack(eventTarget, eventArgument) { var theform = document._ctl0; theform.__EVENTTARGET.value = eventTarget; theform.__EVENTARGUMENT.value = eventArgument; theform.submit(); } // ?gt; </script> <h2>ASP.NET color page</h2> <div id="_color" style="background-color:Red;width:100;height:100;"/> <p> <input language="javascript" οnclick="__doPostBack('_redButton','')" name="_redButton" id="_redButton" type="button" value="Red" /> <input language="javascript" οnclick="__doPostBack('_greenButton','')" name="_greenButton" id="_greenButton" type="button" value="Green" /> <input language="javascript" οnclick="__doPostBack('_blueButton','')" name="_blueButton" id="_blueButton" type="button" value="Blue" /> </p> </form> </body> </html>

转载于:https://www.cnblogs.com/digitalghost/archive/2004/07/01/20263.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值