WebForm之煩惱
1.winform式的開發方式
WebForm的開發方式中,只需要從工具箱中拖拽一個控件,再從.aspx.cs中寫控件的事件邏輯,就好了。
微軟為我們做了很多工作,很多東西不需要我們了解。微軟貌似想把網站開發變得跟Winform開發一致。
但是開發人員不了解運行機制,真的好嗎?
2.ViewState
Webform為了保存一些頁面的狀態信息,用了一個<input type =“hidden”>。 別人告訴我這個叫ViewState。
ViewState讓html變得異常“丑陋”。
WebForm的弊端
1.入門容易,開發很難
方便、快捷的服務器端控件,在讓我們享受簡便的同時,也給我們帶來的無窮的煩惱。如果只是拖控件,初學者上手很容易。但這之后因為很多東西封裝太強,很多底層東西讓我們初學者不是很明白,想再提升很難了。
2.控制不靈活
對於頁面的數據的呈現方式,一遍人很難控制。
3.ViewState處理
這種機制,的確讓開發變得簡單了。但是同樣它也讓html變得異常臃腫、丑陋。
4.異步請求
異步請求每個請求后台都不許有一個一般處理程序對應。
5.容易變傻
WebForm的開發方式,跟傳統的Web開發方式不一致。傳統web開發必須了解的東西,這里很多都不需要了解,例如http協議,ajax,javascript等等。。。總之,控件很豐富,不需要你了解太多。
推薦輕量的使用WebForm
這條其實挺糾結地,既然吐槽了WebForm這么多,干么還要用呢?直接不用不就得了。
我的理解是這樣的:首先,對於.NET開發,很多人第一反應還是WebForm(盡管他們可能不用這個,這種思維挺怪的。)就像街頭賣藝這個行當,行內人都知道“胸口碎大石”是假把式。但是作為賣藝人,如果跟人說,我不會“胸口碎大石”,多少還有點羞於啟齒。其次呢,很多時候開發時候什么技術,不是由我們決定的。萬一前面有webForm開發的程序,不會改也不太好。 所以我的建議是,還是要略懂一點。注意略懂即可。
1. aspx頁面
這里說是要,推薦一種輕量的使用WebForm的方式。 這個案例中 僅僅做一個列表功能吧。
/* 在aspx文件中,其實是支持html和代碼混編的這種方式的。 盡管你肯能覺得他很亂,但webform下不失為一種說得過去的解決方案。 */ <table> <thead> <tr><th>姓名</th><th>年齡</th><th>性別</th><th>編輯</th></tr> </thead> <tbody> <%for(int i=0;i<persons.Rows.Count;i++){ System.Data.DataRow row = persons.Rows[i]; %> <tr><td><%=row["Name"] %></td><td><%=row["Age"] %></td><td><%bool gender = (bool)row["Gender"];Response.Write(gender?"男":"女"); %></td><td><a href="PersonAddNewEdit.aspx?action=edit&id=<%=row["Id"] %>">編輯</a></td></tr> <%} %> </tbody> </table>2.aspx.cs文件
//Model:不知道自己如何被顯示,也不知道是如何被查詢出來 protected DataTable persons; protected void Page_Load(object sender, EventArgs e) { //查詢數據,把數據放到Model,也不知道數據是如何展現的 persons = SqlHelper.ExecuteQuery("select * from T_Persons"); }