2012-01-17 83 views
3

在我的ASP.net MVC應用程序,運行ASPX視圖引擎,我有一個控制器有多個操作方法。對於這些操作方法中的每一個,我都注意到我可以分配多個視圖,然後在控制器的操作方法中通過名稱來調用每個視圖。Asp.Net MVC控制器 - 動作和視圖映射元數據

我想知道這個映射數據存儲在項目中的位置。我掃描了項目文件,發現這些信息是無處可逃的。在包含多個視圖的大型項目中,如何知道如何查找特定操作的所有視圖。我最初認爲這將存儲在由Visual Studio生成和維護的某個配置文件中。但似乎並非如此。那麼這個數據存儲在哪裏呢?在具有多個視圖的大型項目中,找出哪些文件真的是必需的,哪些不是,這將是一場噩夢。

你對此有何看法?

回答

4

聖地亞哥是正確的,ASP.NET MVC是很大程度上基於慣例,但在其上擴展更多,當控制器看起來是這樣的:

public class FooController : Controller 
{ 
    public ActionResult Bar() 
    { 
     return View(); 
    } 
} 

按照慣例,視圖引擎將一個視圖中進行搜索名爲在以下位置Bar

~/Views/Foo 
~/Views/Shared 

這是很容易通過添加一個新的動作,而不是增加的角度看,你會得到這個信息的異常屏幕:

The view 'Bar' or its master was not found or no view engine supports the searched 
locations. The following locations were searched: 
    ~/Views/Foo/Bar.aspx 
    ~/Views/Foo/Bar.ascx 
    ~/Views/Shared/Bar.aspx 
    ~/Views/Shared/Bar.ascx 
    ~/Views/Foo/Bar.cshtml 
    ~/Views/Foo/Bar.vbhtml 
    ~/Views/Shared/Bar.cshtml 
    ~/Views/Shared/Bar.vbhtml 

同樣的,如果你有​​它會尋找相同的位置下ViewNameHere

要回答你的問題,即使一個項目可能有數以百計的觀點和行爲可以返回多個視圖,除非你重寫視圖引擎的行爲,所有的意見都進行分組根據自己的控制器放置在共享文件夾

3

asp.net mvc是基於慣例的。除非沒有使用明確的視圖名稱,否則控制器返回的視圖將由方法名稱隱含。 如需進一步信息退房:asp-net-mvc-views-overview-cs

相關問題