解決方䅁就是,統一語境,至少大量減少切換頻。
Asp,Net Web Form就是一個不錯的嘗試,HTML標記對象化,把不變內容HTML標記,統一到后台語境。一個個HTML標記都成為后台對象,變量填充自然在后台,以對象賦值的方式,統一的實施,跨越了語境的切換。這也是Web Form命名的含義,讓網頁像桌面一樣一致編程。應該,說微軟的這個技術方向還是比較成功的。至少,我就是在這個環境下,得進入Web行業,反過來,從后台的模型學習HTML前台DOM。
然而,Web Form的敗筆卻在架構方面,對象化HTML后,后台的處理反過來,全都以頁面為中心概念,妄圖忽略前端與后端的時間差(服務端控件?),真的把互聯網當成了本地高速網了?
ASP MVC呼之即出,從1到3,4也在測試當中,發展相當之快。雖然,是后台的架構改變,對前端的影響也是巨大的。MVC結構不能再延用Web Form了,那是雞同鴨講。
歷史總在繞圏圈,我們又回到ASP時代,用嵌入的變量拼湊HTML代碼。
<span><%=Value%></span>
從一片空白開始,重新出發。很快,微軟推出了HtmlHelper,一點一點,把碎片重新粘合起來。MVC3又推出了Razor視圖引擎,讓視圖真正成為模板,當然后面仍有一個類在支持視圖,但提供了更大的靈活性支持擴展,前文有詳敘。而且,Razor在語法上也進一步減少碎片,不用結束符,不用加尖括號,智能識別環境變化,是HTML模式還是后台模式? 所有這些是解決本文開始所描述的碎片問題,代碼碎片和思維的碎片。
完了?等等,所有這些似乎只是再為我們最后的英雄出場作准備。真正讓Html行雲流水,Fluent Html.
http://lunaverse.wordpress.com/category/ms-mvc/fluenthtml/
看看生成表格的一段代碼吧,一段代碼勝過一千張圖。
@model IEnumerable<ExamDTO>
@this.Grid(Model).Columns(c=>
{
c.For(x => x.Code).Named("代碼");
c.For(x => x.Name).Named("名稱");
c.For(x=>"刪除").Named("操作");
}).Empty("沒有記錄!")