Essential ASP.NET 讀書筆記–WebForm

來源:互聯網
上載者:User
用戶端伺服器通過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 />

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.