3

这更像是对 MVC 3 如何工作的“架构理解”。我真的很想知道 MVC 如何知道为给定的控制器操作调用哪个视图。我可以猜测,当我们使用 Visual Studio 为控制器操作创建视图时,它会将这些绑定存储在项目的某种文件中,对吗?

提前致谢。Marcelo Myara 里约热内卢/巴西

4

1 回答 1

2

它是使用“约定优于配置”的思想完成的。

如果您使用没有视图的随机操作,您可以看到它实际上是在尝试一堆不同的约定,寻找匹配项:

public ActionResult SomeActionWithNoView()
{
    return View();
}

它在Views/ControllerNameViews/Shared文件夹中查找与操作名称匹配的视图文件(.aspx、.ascx、.cshtml 或 .vbhtml 扩展名) 。

未找到视图“SomeActionWithNoView”或其主视图,或者没有视图引擎支持搜索到的位置。搜索了以下位置:

~/Views/Home/SomeActionWithNoView.aspx

~/Views/Home/SomeActionWithNoView.ascx

~/Views/Shared/SomeActionWithNoView.aspx

~/Views/Shared/SomeActionWithNoView.ascx

~/Views/Home/SomeActionWithNoView.cshtml

~/Views/Home/SomeActionWithNoView.vbhtml

~/Views/Shared/SomeActionWithNoView.cshtml

~/Views/Shared/SomeActionWithNoView.vbhtml


可以使用/Views根目录中的_ViewStart.cshtml设置默认视图布局:

@{
    Layout = "~/Views/Shared/MyDefaultLayout.cshtml";
}

可以根据需要在各个视图中删除或更改它。

于 2012-10-25T23:32:16.880 回答