淺析十二個(gè)最佳ASP.NET MVC實(shí)踐
我們將談到的是ASP.NET MVC實(shí)踐,這十二個(gè)ASP.NET MVC實(shí)踐可以幫助大家更好的進(jìn)行開(kāi)發(fā)工作。希望對(duì)大家有所幫助。
關(guān)于Controller的***實(shí)踐
1-刪除AccountController
讓Demo代碼在你的程序中是一個(gè)非常不好的做法。請(qǐng)永遠(yuǎn)不要使用AccountController。
2-隔離外部網(wǎng)絡(luò)和Controller
如果依賴HttpContext,數(shù)據(jù)訪問(wèn)類,配置,日志等,則會(huì)讓程序難以測(cè)試,修改或者進(jìn)一步開(kāi)發(fā)。
3-使用一個(gè)IOC容器
使達(dá)到第二條***實(shí)踐更加容易,使用IOC容器管理所有外部依賴我使用 Ninject v2,這種IOC容器有很多,如果需要的話,你甚至可以自己實(shí)現(xiàn)一個(gè)。
4-和“神奇的strings”說(shuō)不
永遠(yuǎn)不要使用ViewData[“key”],而要為每一個(gè)視圖創(chuàng)建一個(gè)ViewModel,從而使用強(qiáng)類型的ViewPage
神奇的Strings是很邪惡的,因?yàn)槟憧赡苡捎阱e(cuò)誤的拼寫而導(dǎo)致視圖出錯(cuò),而強(qiáng)類型的Model不僅可以有智能感知,而且錯(cuò)誤是在編譯時(shí)獲取而不是在運(yùn)行時(shí)。
5-創(chuàng)建你自己的“個(gè)人慣例”
使用Asp。net MVC作為你個(gè)人(或者公司)的參考構(gòu)架的基礎(chǔ),你還可以使Controller和View繼承于你自己的基類而不是默認(rèn)的基類來(lái)讓你的慣例更加透徹。
6-注意Verbs
就算不使用最合適的HTTP Verb,最要也要采用PRG模式,(Post-Redirect-Get):使用Get來(lái)顯示數(shù)據(jù),使用Post來(lái)修改數(shù)據(jù)。
關(guān)于Model的***實(shí)踐
7–DomainModel != ViewModel
DomainModel代表著相應(yīng)的域,但ViewModel卻是為View的需要而創(chuàng)建。這兩者之間或許(一般情況下都)是不同的,此外DomainModel是數(shù)據(jù)加上行為的組合體,是由復(fù)雜的變量類型組成的并且具有層次。而ViewModel只是由一些String等簡(jiǎn)單變量類型組成。如果想移除冗余并且容易導(dǎo)致出錯(cuò)的ORM代碼,可以使用AutoMapper。如果想要了解更多,我推薦閱讀:ASP。NET MVC View Model Patterns。
8-為“共享”的數(shù)據(jù)使用ActionFilter
這是我自己的解決方案,或許需要在未來(lái)發(fā)帖繼續(xù)探討。通常情況下,你都不希望你的Controller獲取的數(shù)據(jù)在幾個(gè)不同的View之間共享,我的方法則是使用ActionFilter來(lái)獲取在幾個(gè)不同View之間共享的數(shù)據(jù),然后用合適的View來(lái)顯示。
關(guān)于View的***實(shí)踐
9-不要使用CodeBehind模式
永遠(yuǎn)不要。
10-盡可能的寫HTML代碼
我認(rèn)為Web開(kāi)發(fā)人員必須的習(xí)慣于寫HTML(或者CSS和JAVASCRIPT)。所以***少用僅僅用來(lái)隱藏HTML代碼的HTMLHelper(比如HTML。Submit或者HTML。Button)。這也是我會(huì)在未來(lái)的帖子里討論的。
11-如果有if語(yǔ)句,使用HTMLHelper
View必須是啞巴(Controller是瘦子而Model是胖子),如果你發(fā)現(xiàn)自己在使用if語(yǔ)句,那就寫一個(gè)HTMLHelper來(lái)隱藏選擇條件語(yǔ)句。
12-仔細(xì)的選擇你的View引擎
默認(rèn)的引擎室WebFormViewEngine,IMHO并不是***的引擎,我更傾向于選擇Spark ViewEngine,因?yàn)閷?duì)于我來(lái)說(shuō)這個(gè)引擎更適合MVC的View。我喜歡的是“dominates the flow and that code should fit seamlessly”對(duì)于每一次循環(huán)來(lái)說(shuō)IF語(yǔ)句都會(huì)被定義在”HTML標(biāo)簽“中。
原文標(biāo)題:<譯>12個(gè)asp.net MVC***實(shí)踐
鏈接:http://www.cnblogs.com/CareySon/archive/2009/10/31/1593731.html


















