【问题标题】:¿Relation between Controller's Action Method and the Views?¿Controller的Action Method和View的关系?
【发布时间】:2015-06-24 01:18:53
【问题描述】:
我有几个关于控制器动作方法和视图之间关系的概念性问题:
我看到视图的名称是控制器名称的函数;控制器类的名称与视图的名称空间相同(由 .cshtml 文件所在的文件夹的名称表示),方法的名称与视图的 .cshtml 文件的名称相同。为什么会这样?如果我在解释中遗漏了什么,它到底是如何工作的?
有没有一种方法可以将 .cshtml 文件(视图)放在与控制器类名匹配的文件夹之外?
MVC 是否有限制 .cshtml 文件的名称与控制器操作方法的名称匹配?
控制器动作方法中返回的View()方法到底是什么?
为什么控制器类的方法叫“控制器动作方法”?
MVC 是否限制控制器的名称以“Controller”字尾结尾?
谢谢大家
【问题讨论】:
标签:
asp.net-mvc
model-view-controller
【解决方案1】:
我强烈建议阅读有关 MVC 的教程,例如此代码项目 tutorial。
- 命名约定不是一成不变的,但通常允许一个易于理解的结构。
- 是的,要导航到视图,您可以指定路径。
return View("~/this/is/your/path/ViewName.cshtml");
- 没有。见上文,假设返回类型符合方法的返回类型(如下所述),您可以从具有正确路径的任何方法返回任何视图。
- View() 是一个 C#“方法”,它告诉项目导航到您指定的视图以及您传递的任何参数。查看docs 可以找到更正确和更深入的答案。默认
return View() 尝试导航到return View("MethodName");
-
Action methods 是返回类型为 ActionResult 的方法。重定向和查看就是这样的例子。将它们视为类似于对象返回类型,例如
void 或string,但ActionResult 会告诉您的项目执行某些操作,例如重定向到另一个方法或通过View() 返回一个ViewResult。李>
- 没有。试试看!然而,这通常是一种很好的做法,因为它可以很容易地按名称分隔文件,因为您的项目中可能会有相似的文件名。