用戶端伺服器通過WebForm進行的互動
由於http串連是沒有狀態的,所以頁面的狀態將無法通過串連來儲存;而asp.net就提出了一種方案來儲存頁面的目前狀態,那就是使用了ViewState的頁面將會在_ViewState這個隱藏的64位編碼的字串中儲存所有頁面元素的最後值,具體執行個體如下:
在asp.net中,我們可以驚訝的發現我們居然可以使用和winform一致的事件處理機制;就如下例所示
<!?color.aspx ?gt;<br /><%@ Page Language="C#" %></p><p><html><br /><script runat=server><br />protected void OnRed(object src, EventArgs e)<br />{<br /> _color.Style["background-color"] = "Red";<br />}</p><p>protected void OnGreen(object src, EventArgs e)<br />{<br /> _color.Style["background-color"] = "Green";<br />}</p><p>protected void OnBlue(object src, EventArgs e)<br />{<br /> _color.Style["background-color"] = "Blue";<br />}</p><p>protected void Page_Init(object src, EventArgs e)<br />{<br /> _redButton.ServerClick += new EventHandler(OnRed);<br /> _greenButton.ServerClick += new EventHandler(OnGreen);<br /> _blueButton.ServerClick += new EventHandler(OnBlue);<br />}</p><p>protected void Page_Load(object src, EventArgs e)<br />{<br /> if (!IsPostBack)<br /> {<br /> _color.Style["background-color"] = "Red";<br /> _color.Style["width"] = "100";<br /> _color.Style["height"] = "100";<br /> }<br />}</p><p></script><br /><body><br /> <form runat=server></p><p> <h2>ASP.NET color page</h2><br /> <div id=_color runat=server /><br /> <p><br /> <input type=button id=_redButton value="Red"<br /> runat=server /><br /> <input type=button id=_greenButton value="Green"<br /> runat=server /><br /> <input type=button id=_blueButton value="Blue"<br /> runat=server /><br /> </p><br /> </form><br /></body><br /></html>
但是實現這樣的機制,是需要付出代價的;asp.net在後台完成了大量的工作;
同樣使用hidden欄位,asp.net使用javascript完成對不同控制項事件的不同狀態post到伺服器的工作:
<html><body><br /> <form name="_ctl0" method="post"<br /> action="color.aspx" id="_ctl0"><br /><input type="hidden" name="__EVENTTARGET" value="" /><br /><input type="hidden" name="__EVENTARGUMENT" value="" /><br /><input type="hidden" name="__VIEWSTATE" value="dD...==" /></p><p><script language="javascript"><br /><!?<br /> function __doPostBack(eventTarget, eventArgument) {<br /> var theform = document._ctl0;<br /> theform.__EVENTTARGET.value = eventTarget;<br /> theform.__EVENTARGUMENT.value = eventArgument;<br /> theform.submit();<br /> }<br />// ?gt;<br /></script></p><p> <h2>ASP.NET color page</h2><br /> <div id="_color"<br /> style="background-color:Red;width:100;height:100;"/><br /> <p><br /> <input language="javascript"<br /> onclick="__doPostBack('_redButton','')"<br /> name="_redButton" id="_redButton"<br /> type="button" value="Red" /><br /> <input language="javascript"<br /> onclick="__doPostBack('_greenButton','')"<br /> name="_greenButton" id="_greenButton"<br /> type="button" value="Green" /><br /> <input language="javascript"<br /> onclick="__doPostBack('_blueButton','')"<br /> name="_blueButton" id="_blueButton"<br /> type="button" value="Blue" /><br /> </p><br /> </form><br /></body><br /></html><br />