关于MVC 2 View映射机制

时间:2010-09-11 13:48:00

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

我想知道从控制器到视图的映射机制。我无法理解映射是如何可能的如果我们只返回View()方法的值。 Controller类的View()方法使用null参数调用重载的View方法。但是如何能够映射到没有指定View()方法返回值的视图?

2 个答案:

答案 0 :(得分:2)

控制器知道正在调用的操作,并且按照惯例,如果您没有指定视图名称,它将在Views/ControllerName/ActionName.aspx.ascx)中查找相应的视图。如果找不到,它会显示搜索位置列表。


以下是有关其工作原理的更多详细信息:

  1. 请求来自/ControllerName/ActionName
  2. 请求被ASP.NET管道拦截,路由引擎根据配置提取令牌。如果配置了默认路由,则提取controller =“ControllerName”和action =“ActionName”。
  3. 路由引擎在控制器缓存中查找是否存在与名称ControllerNameController对应的类型。
  4. 如果确实存在,则使用控制器工厂进行实例化,并调用名为ActionName的方法。如果控制器不存在且使用默认控制器工厂,则使用反射来查找在所有引用的程序集中从Controller派生的所有类型,并缓存这些类型。
  5. 执行操作,视图引擎将查找使用前面描述的约定存储的模板。

答案 1 :(得分:1)

ASP.NET MVC框架调用控制器的action方法。您具有global.asax的路由规则定义将哪个URL映射到哪个操作方法。