2009-01-21 51 views
2

如果我沒有弄錯 - ASP.NET MVC的約定似乎希望我爲控制器視圖執行以下操作。我應該打電話給我的每個MVC視圖Index.aspx?

這就是我創建'產品'目錄的日子,我把'我的'索引'視圖放置在該目錄中。然後我創建一個'ProductsController'並在其上創建一個'Index'方法,它返回一個View。只返回沒有參數的View()會去取'Index.aspx'頁面,因爲它與方法名稱相同。

public class ProductsController : Controller 
    { 
     public ActionResult Index() 
     { 
      return View(); // looks for Index.aspx in Products directory 
     } 
    } 

現在這就好了。但我最終會有十億個Index.aspx頁面,而我是其中一個從不關閉任何文件的人,所以我最終會變得瘋狂。

或者我可以創建產品/ Products.aspx和我的控制器更改爲以下:

public class ProductsController : Controller 
    { 
     public ActionResult Index() // my default routing goes to Index (from sample project) 
     { 
      return View("Products"); 
     } 
    } 

我的理解是如何工作的,以及它的MVC設計模式中完全沒做到這一點。它不是黑客或任何類似的東西。

我的問題(在聽取this PDC視頻之後)是關於customizabiltity的約定在MVC(或任何正確的短語)中受到青睞。

所以我想知道如果我錯過了第三種方式,或者如果人們在Visual Studio中使用50個索引選項卡就好了?

回答

2

使每個控制器的默認操作具有相同的名稱只是簡化了路由(檢查global.asax)。此外,它的所有內容(產品,書籍,聯繫人...)都使用具有相同名稱的動作/視圖來執行相同的功能,然後代碼變得更容易導航和理解。作爲團隊工作的一部分,這種慣例的使用尤其重要,因爲它會鼓勵開發人員使用一致的代碼。

在查看另一個問題時,我在codeplex上的MVCContrib項目中碰到了SimplyRestfulRouting。這可能會給你一些想法。

+0

所以你不介意Index.aspx頁面噸? – 2009-01-22 23:42:15

0

這只是一種模式。使用圖案,但讓它爲你工作。就我個人而言,我喜歡用他們的函數命名我的視圖,並且我沒有很多Index.aspx頁面,因爲我沒有很多索引。

+0

但肯定'index.aspx'的想法只是與'標準'index.htm或index.html約定相同。它不關於任何種類的指數。他們可以稱之爲默認,我實際上認爲這是一個更好的名稱的方法,但MS可能想遠離default.aspx – 2009-01-21 23:36:56

2

我認爲你應該在動作之後命名該方法並命名該視圖(如果它有意義並且不在動作之間共享,則與動作相同)。你應該改變你的路由機制,因爲Index不是一個真正的描述性名稱。動作名稱應代表它的作用(就像任何方法一樣),不應將其硬編碼爲Index或類似的東西。路由應該被編輯。

+0

我還沒有進入路由呢!我會更深入地研究,但我認爲理解它肯定會教我​​很多。試圖今天學習MVC並同時爲他重新格式化一個同事筆記本電腦 – 2009-01-21 23:38:01

相關問題