關於asp.net mvc 2.0 中 area的用法

來源:互聯網
上載者:User

最近,看到很多的關注並使用asp.net mvc的網友,都在尋找一種分離網站前後台結構的方法。Asp.net mvc 1.0正式版,並沒有給我們提供一種很好的解決方案。對於1.0正式版中,通常的做法,就是用命名首碼來解決的。比如:AdminProductController,UserProductController,ProductController,但是,此類的命名冗長,一旦項目龐大複雜,變得很臃腫難以管理。而且終究不是完美的解決方案。

Asp.net mvc 2.0 preview 1,提供了一種解決方案:area。它是根據項目分離來實現的。所以,不敢保證未來正式版中也是這樣,只能說,是臨時解決方案。

下面,我將具體列出幾個步驟。展示area的用法。

開發環境:VS2008 SP1,ASP.NET MVC 2.0 Preview 1

添加項目的時候,不要添加測試專案,保持清潔。

步驟 0 :

建立一個Web項目,:主專案。

步驟1:

在解決方案上建立解決方案檔案夾,取名Areas

在Areas解決方案檔案夾裡,添加一個新的web項目,最後管理員後台項目。

步驟2:

清除Areas下項目不需要的檔案:

清除AspnetMvcArea.Web.Admin項目下,一下一些檔案:

1. /Content 目錄下檔案及子檔案夾

2. /Scripts 目錄下檔案及子檔案夾

3. /Controllers 下檔案及子檔案夾

4. /Views 下檔案及之檔案夾,但保留web.config檔案。

5. 刪除項目Global檔案。

步驟3:

卸載項目:AspnetMvcArea.Web以及AspnetMvcArea.Web.Admin

步驟4:

修改專案檔。

1. 修改主專案:AspnetMvcArea.Web

修改AspnetMvcArea.Web.csproj檔案內容,用記事本之類的編輯器開啟。

取消一中的註解:

A.

B.

2. 修改子項目:AspnetMvcArea.Web.Admin

同上,取消中的註解:AspnetMvcArea.Web.Admin.csproj

A.

B.注意,此處的需別。其實,英文寫的很清楚了。

儲存以上修改,退出。回到vs環境。

步驟5. 重新附加元件目。

載入剛才卸載的兩個項目。

步驟6. 在子項目上,添加控制器及視圖。

1. 添加AccountController,就是為了和主專案預設添加的AccountController名稱相同。

2.在AccountController的Action上各自添加視圖。

LogOn:

LogOff:

步驟7:添加路由類庫

在解決方案上,添加一個類庫: AspnetMvcArea.MapRoutes,並建立一個Routes靜態類。

注意添加引用的版本:2.0

Routes靜態類內部:

步驟8. 在主專案AspnetMvcArea.Web中,添加AspnetMvcArea.Web.Admin和AspnetMvcArea.MapRoutes的引用。

修改主專案AspnetMvcArea.Web中的Global檔案

步驟9:在AspnetMvcArea.Web.Admin項目上,修改AccountController控制器的各個視圖。

1. Index視圖

2. LogOn視圖

3. LogOff視圖

步驟10,基本以完成大部分了。現在就是修改一個串連。以便測試。

1. 修改主專案Views/Shared/Site.Master

2.修改主專案Views/Shared/LogOnUserControl.ascx

步驟11:完結?

當然,如果真的完成了,那也算完美。可惜。。。啟動並執行時候,發現,area地區找不到視圖。

這個是視圖定位問題。修改的辦法,就是改Areas項目名稱以及程式集名稱和命名空間。全部和area名稱保持一致。

把AspnetMvcArea.Web.Admin項目的名稱,程式集名稱以及命名空間,全改為和定義的area名稱一致:Admin。

在編譯項目的時候,會在主專案下,產生Areas檔案夾,看下檔案夾下的目錄就明白了。至此,才算完成。
當然,如果要保持命名規範。可以在不改動程式集名稱和命名空間的情況下,只要把area名稱改成如:AspnetMvcArea.Web.Admin也可以。就是前台寫得時候,麻煩了點。
為了書寫上的方便,也可以把area名稱儲存在一個常量裡。
總之一句話:保持area名稱和area項目程式集名稱一致。命名空間可以不一致。

Ps:注意同步修改Routes靜態類下MapAreaRoute方法用到的命名空間參數。

期待下個版本,不用這麼麻煩。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.