存储的元数据在哪里将Action方法映射到其View

时间:2014-01-17 12:48:38

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

我继承了一个解决方案,它有很多旧代码,我正在尝试清理它。

我知道公约是视图与动作方法同名。

然而, 右键单击“操作方法”并选择“添加视图”时,可以选择视图的名称。是否存在映射或保留此关系的位置。

我知道'按惯例',视图引擎将搜索名称位于以下内容的视图:

〜/查看/ ControllerName 〜/查看/共享

但是如果你给一个视图一个不同于它的Action Name的名字MVC知道如何使用该文件,那么该方法的元数据中是否存储了一些数据。

例如我有一个

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

但是当我右键单击并添加“添加视图...”时,我将视图命名为Random.cshtml

此Controller Action方法如何知道如何使用此视图。这些数据存储在哪里。

2 个答案:

答案 0 :(得分:1)

默认情况下,它会返回与Action名称相同的视图,因此在您的情况下' Bar'。

但是,您也可以按名称指定不同的视图,如下所示:

return View("SomeViewOtherThanBar");

ETA:文件/类/等之间没有映射(我知道)。当您使用Visual Studio右键单击帮助程序来创建视图时。

答案 1 :(得分:0)

默认视图引擎在〜/ Views / [Controller] / [Action] .cshtml

下搜索具有相同操作名称的视图

没有包含映射的元数据文件或任何类型的存储。

但是,如果要扩展/更改此行为,则可以编写和注入自己的视图引擎:

MVC4 Razor Custom View Locator