ASP.NET MVC作為微軟官方的.NET平臺(tái)下MVC解決方案,自誕生起就吸引了眾多.NET平臺(tái)開發(fā)人員的眼球。在經(jīng)歷了漫長Preview后,上個(gè)月微軟終于發(fā)布了其beta版。應(yīng)該說,通過我親身實(shí)踐,我認(rèn)為這個(gè)框架的設(shè) " /> jiyouzz国产精品久久,91精品美女在线,激情影院在线

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

ASP.NET MVC小論

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

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

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

主站蜘蛛池模板: 金门县| 安阳县| 子长县| 公主岭市| 郑州市| 大理市| 青铜峡市| 灯塔市| 东丽区| 青神县| 黄冈市| 康保县| 福海县| 郯城县| 新闻| 廉江市| 石景山区| 贡山| 佛山市| 吕梁市| 济阳县| 孟连| 铜山县| 娄底市| 霍山县| 梧州市| 莎车县| 密云县| 开原市| 乌鲁木齐县| 明溪县| 黄梅县| 白城市| 龙海市| 治多县| 梁平县| 乌拉特前旗| 克东县| 日喀则市| 江北区| 任丘市|