ASP.NET MVC作為微軟官方的.NET平臺下MVC解決方案,自誕生起就吸引了眾多.NET平臺開發(fā)人員的眼球。在經(jīng)歷了漫長Preview后,上個月微軟終于發(fā)布了其beta版。應(yīng)該說,通過我親身實踐,我認為這個框架的設(shè) " /> 欧美亚洲国产日韩,免费观看欧美大片,香蕉久久夜色精品国产

色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

ASP.NET MVC小論

  前言
      ASP.NET MVC作為微軟官方的.NET平臺下MVC解決方案,自誕生起就吸引了眾多.NET平臺開發(fā)人員的眼球。在經(jīng)歷了漫長Preview后,上個月微軟終于發(fā)布了其beta版。應(yīng)該說,通過我親身實踐,我認為這個框架的設(shè)計還是相當優(yōu)秀的,至少從易用性來說,ASP.NET MVC要優(yōu)于Java平臺上的Struts和Struts2。使用Struts實現(xiàn)MVC時,除了要寫一堆ActionForm、Action和ActionResult外,最頭疼的莫過寫于各種xml映射配置文件。Struts2雖然不用再寫ActionForm,并且降低了侵入度(其實Struts2和Struts關(guān)系不大,而基本可以認為是WebWork的后續(xù)版本),但是仍無法避免xml配置文件。
      ASP.NET MVC從一開始的設(shè)計思路就與Struts不同,它的映射是利用路由配置而非xml,從而大大降低了開發(fā)復(fù)雜度,并且比Struts要更直觀,更容易上手。
      可是,這并不表明ASP.NET MVC就是盡善盡美的。在我實踐的過程中,發(fā)現(xiàn)某些地方使用起來還是不太方便,在這里小小論述一下。不妥之處,還請各位盡情批評。
  別扭的視圖:能不能不要讓我承擔邏輯
      我個人認為,ASP.NET MVC第一個不太妥當?shù)牡胤骄褪且晥D的實現(xiàn)。在這個框架中,視圖是使用ASPX文件實現(xiàn)的。就呈現(xiàn)數(shù)據(jù)這一需求來說,ASP.NET MVC下一般性的做法是:控制器負責調(diào)用Model完成數(shù)據(jù)的讀取,并將需要呈現(xiàn)的數(shù)據(jù)通過ViewData傳遞給視圖,并選擇某視圖呈現(xiàn)。被選中的視圖要負責將ViewData中相應(yīng)的數(shù)據(jù)讀取、分解,然后使用一定的邏輯語句將其呈現(xiàn)。
      這個方式,就要求視圖中存在一定的邏輯語句,如將ViewData中數(shù)據(jù)轉(zhuǎn)換成相應(yīng)類型的類型轉(zhuǎn)換語句;如果需要按照某一條件呈現(xiàn)不同內(nèi)容,則需要分支語句;而常用的表格式數(shù)據(jù)呈現(xiàn)需要用到循環(huán)語句。于是,我們就會看到視圖中充斥著各種<%%>、if、foreach等等的東西。
      當然,我不否認,良好的編寫可以讓這些代碼整潔的出現(xiàn)在視圖中。然而,在我的心目中,一個良好基于Web應(yīng)用的MVC框架設(shè)計,其視圖是不應(yīng)該存在任何可執(zhí)行代碼的,而應(yīng)該是一個單純的模板文件,或者說含有可替換標簽的頁面文件,就像php平臺下的Smarty那樣。至于視圖中相應(yīng)的可替換標簽替換成什么內(nèi)容,應(yīng)該是控制器的責任。設(shè)計一套良好的標簽?zāi)0澹瑢?shù)據(jù)、分支、循環(huán)等常見任務(wù)設(shè)置相應(yīng)標簽,我認為是更適合ASP.NET MVC的視圖設(shè)計。一來,這樣可以讓視圖真正“靜態(tài)化”,更有利于邏輯和表示的分離;二來,美工可以更好的關(guān)注于僅包含html代碼和標簽的視圖,而不用關(guān)注于可執(zhí)行代碼。
  對Ajax的支持:仍然很不方便
      我們知道,現(xiàn)在在一個Web應(yīng)用中加入Ajax元素是司空見慣的,微軟當然知道這一點,所以在ASP.NET MVC中,天然支持ASP.NET AJAX和jQuery,并提供了一個AjaxHelper來完成一些輔助性操作。然而,這個AjaxHelper的功能真是遠遠不夠。
      由于ASP.NET MVC的特性,導(dǎo)致某一個Action的Url不是固定的。所以在請求Action時,一般不是將Url硬編碼在頁面中,而是通過Html.ActionLink動態(tài)生成。這就出現(xiàn)了一個問題,Ajax請求怎么辦?當然,對于點擊鏈接或提交表單觸發(fā)的Action,AjaxHelper有專門的輔助方法,但是,如果某個Ajax請求不是通過鏈接或表單觸發(fā)的,就會很有問題。畢竟你不能把Url硬編碼在js里。
      關(guān)于這個問題,沒有太好的解決方案,目前只能用一些類似hack的方式。如將Url用Html.ActionLink寫入某個span,再將這個span的display設(shè)為none。最后,js從span中讀入Url進行請求。
      希望在后續(xù)版本中,ASP.NET MVC能對Ajax有更好的支持。
  文檔
      再一個我認為ASP.NET MVC不太理想的地方就是沒有完整的配套文檔。目前能找到的官方文檔只有Quick Start,并沒有完整的開發(fā)文檔。也許是因為正式版還沒有發(fā)布吧,希望配套文檔能盡快推出。
  后面的話
      雖然有以上諸多不便,但是ASP.NET MVC作為一個正在發(fā)展的框架,我個人還是很看好其前景的。希望它能越來越完善,給ASP.NET平臺上的MVC開發(fā)帶來更多的便利。

NET技術(shù)ASP.NET MVC小論,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 石城县| 克山县| 四川省| 论坛| 桦川县| 沅陵县| 安康市| 股票| 高陵县| 白河县| 华安县| 崇仁县| 河源市| 武川县| 九龙坡区| 永泰县| 清苑县| 务川| 博兴县| 兴山县| 通道| 巴林右旗| 龙州县| 三明市| 都昌县| 郎溪县| 静安区| 永年县| 新疆| 如皋市| 成安县| 六枝特区| 长阳| 开化县| 礼泉县| 新和县| 新蔡县| 临沂市| 屏东县| 博野县| 景东|