12個asp.net MVC最佳實務

來源:互聯網
上載者:User

       上一周我我在羅馬進行了兩場對於開發完成不久的http://www.dotnetromacesta.org/的Asp.net MVC的演講。而其中一場演講內容是關於我對於Asp.net MVC最佳實務的看法.因為這場演講是在意大利進行的,為了大家能更好的閱讀,我將演講所用的ppt翻譯成英文。

     

關於Controller的最佳實務
1-刪除AccountController

    讓Demo代碼在你的程式中是一個非常不好的做法。請永遠不要使用AccountController.

2-隔離外部網路和Controller

     如果依賴HttpContext,資料訪問類,配置,日誌等,則會讓程式難以測試,修改或者進一步開發。

3-使用一個IOC容器

    使達到第二條最佳實務更加容易,使用IOC容器管理所有外部依賴我使用 Ninject v2,這種IOC容器有很多,如果需要的話,你甚至可以自己實現一個。

4-和“神奇的strings”說不

    永遠不要使用ViewData[“key”],而要為每一個視圖建立一個ViewModel,從而使用強型別的ViewPage<ViewModel>.

    神奇的Strings是很邪惡的,因為你可能由於錯誤的拼字而導致視圖出錯,而強型別的Model不僅可以有智能感知,而且錯誤是在編譯時間擷取而不是在運行時。

5-建立你自己的“個人慣例”

    使用Asp.net MVC作為你個人(或者公司)的參考構架的基礎,你還可以使Controller和View繼承於你自己的基類而不是預設的基類來讓你的慣例更加透徹。

6-注意Verbs

    就算不使用最合適的HTTP Verb,最要也要採用PRG模式,(Post-Redirect-Get):使用Get來顯示資料,使用Post來修改資料。

  

關於Model的最佳實務
7–DomainModel != ViewModel

     DomainModel代表著相應的域,但ViewModel卻是為View的需要而建立。這兩者之間或許(一般情況下都)是不同的,此外DomainModel是資料加上行為的組合體,是由複雜的變數類型組成的並且具有層次。而ViewModel只是由一些String等簡單變數類型組成。如果想移除冗餘並且容易導致出錯的ORM代碼,可以使用AutoMapper.如果想要瞭解更多,我推薦閱讀:ASP.NET MVC View Model Patterns.

8-為“共用”的資料使用ActionFilter

     這是我自己的解決方案,或許需要在未來發帖繼續探討。通常情況下,你都不希望你的Controller擷取的資料在幾個不同的View之間共用,我的方法則是使用ActionFilter來擷取在幾個不同View之間共用的資料,然後用合適的View來顯示。

關於View的最佳實務
9-不要使用CodeBehind模式

      永遠不要。

10-儘可能的寫HTML代碼

      我認為Web開發人員必須的習慣於寫HTML(或者CSS和JAVASCRIPT).所以最好少用僅僅用來隱藏HTML代碼的HTMLHelper(比如HTML.Submit或者HTML.Button).這也是我會在未來的文章裡討論的。

11-如果有if語句,使用HTMLHelper

      View必須是啞巴(Controller是瘦子而Model是胖子),如果你發現自己在使用if語句,那就寫一個HTMLHelper來隱藏選擇條件陳述式.

12-仔細的選擇你的View引擎

     預設的引擎室WebFormViewEngine,IMHO並不是最好的引擎,我更傾向於選擇Spark ViewEngine,因為對於我來說這個引擎更適合MVC的View.我喜歡的是“dominates the flow and that code should fit seamlessly”對於每一次迴圈來說IF語句都會被定義在”HTML標籤“中.

DEMO代碼和投影片的下載

     你可以下載投影片或者demo代碼

 

 

 

 

原文連結:http://codeclimber.net.nz/archive/2009/10/27/12-asp.net-mvc-best-practices.aspx

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.