2012-01-17 42 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

相关问题