客户端服务器通过WebForm进行的交互
由于http连接是没有状态的,所以页面的状态将无法通过连接来保存;而asp.net就提出了一种方案来保存页面的当前状态,那就是使用了ViewState的页面将会在_ViewState这个隐藏的64位编码的字符串中储存所有页面元素的最后值,具体实例如下:
在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