鉴于我们有一个控制器方法只返回一个模型对象的ViewResult,MVC或Razor引擎如何继续查找要使用的View,只给出ViewResult?例如
public ActionResult Index()
{
return View( db.Persons.ToList());
}
Run Code Online (Sandbox Code Playgroud)
编辑:换句话说,一旦这个方法返回所有引擎必须继续是一个ViewResult.用于查找视图的任何内容都必须存储在此ViewResult中.
它是否使用cshtml文件顶部的绑定?
@model IEnumerable<Database.Models.Person>
Run Code Online (Sandbox Code Playgroud)
或者它是否使用模型类的字符串名称并通过路由查找?
或者它实际上是否记得哪个控制器称为View()方法,并以此为基础?
或者是其他东西?
对不起,如果这是一个明显的问题.我已经阅读了很多Stackoverflow问题和其他页面,但无法找到使用的方法......我看到很多关于URL如何映射到控制器的讨论,但这不是我感兴趣的部分.
这与模型没有任何关系.将ViewEngine在以下位置查看搜索.
和
默认情况下,视图名称是操作名称,除非您像这样指定视图名称:
return View(model, "ViewName");
Run Code Online (Sandbox Code Playgroud)
您可以自定义搜索位置.你可以在这里阅读.
更新:
控制器名称和操作名称将存储在RouteData.您可以通过以下方式检索RouteData以下内容:
var controllerName = RouteData.Values["controller"].ToString();
var actionName = RouteData.Values["action"].ToString();
Run Code Online (Sandbox Code Playgroud)
更新2:
RouteData也是ControllerContext类的属性,ViewEngine用于查找视图.在这里查看接口FindView方法的定义.IViewEngine
| 归档时间: |
|
| 查看次数: |
3128 次 |
| 最近记录: |