MVC 3视图如何与控制器动作绑定

3
这更像是对MVC 3工作原理的“架构理解”。我真的想知道MVC如何知道为给定的控制器操作调用哪个视图。我猜当我们使用Visual Studio为控制器操作创建视图时,它会将这些绑定存储在项目中的某种文件中,是这样吗?
提前致谢。 马塞洛·米亚拉 巴西里约热内卢
1个回答

2
这是使用“约定优于配置”(Convention over Configuration)的思想完成的。
如果您使用一个没有视图的随机操作,您会发现它实际上正在尝试许多不同的约定,寻找匹配项:
public ActionResult SomeActionWithNoView()
{
    return View();
}

它会在Views/ControllerName或Views/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


可以使用 _ViewStart.cshtml/Views 根目录中设置默认视图布局:
@{
    Layout = "~/Views/Shared/MyDefaultLayout.cshtml";
}

它可以根据个人视图的需要被移除或更改。

嗯...我明白了。但是,在这种情况下(没有任何表来映射它们),视图如何知道应该呈现在哪个布局上(比如,视图如何知道要呈现在~/Views/Shared/_Layout.cshtml上)? - Marcelo Myara
@MarceloMyara 布局是手动设置的 - 没有惯例。通常,您可以使用 _ViewStart.cshtml 指定一个公共布局,然后在各个视图中根据需要进行覆盖。 - McGarnagle
没错,现在我全明白了!非常感谢你! - Marcelo Myara

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接