.net 关于MVC2视图映射机制

.net 关于MVC2视图映射机制,.net,asp.net,asp.net-mvc,.net,Asp.net,Asp.net Mvc,我想知道从控制器到视图的映射机制。我不明白如果我们只返回View()方法的值,映射怎么可能实现。控制器类的View()方法使用空参数调用重载的View方法。但是,如何才能映射到没有指定View()方法返回值的视图呢?控制器知道正在调用的操作,按照惯例,如果不指定视图名称,它将在视图/ControllerName/ActionName.aspx(.ascx)中查找相应的视图。如果找不到,它将显示搜索位置的列表 以下是有关其工作原理的更多详细信息: 请求出现在/ControllerName/Act

我想知道从控制器到视图的映射机制。我不明白如果我们只返回View()方法的值,映射怎么可能实现。控制器类的View()方法使用空参数调用重载的View方法。但是,如何才能映射到没有指定View()方法返回值的视图呢?

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


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

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

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


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

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

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

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

    我仍然不知道控制器如何知道正在调用的操作。那么你能写更多的细节吗?整个控制器范例是基于对控制器类的方法名的反射。因此,在执行一个操作时,当前方法名(action)是众所周知的。你是说调用控制器方法的类已经知道方法名了,对吗?我仍然不知道控制器如何知道正在调用的操作。那么你能写更多的细节吗?整个控制器范例是基于对控制器类的方法名的反射。因此,在执行一个操作时,我们知道当前的方法名(action)是什么。你是说调用控制器方法的类已经知道方法名了,对吗?