Asp.net mvc 不使用全名调用控制器
我是ASP.NET MVC新手。我们创建了一个类似于“AdminController”的控制器,但只使用Admin的名称来调用它。ASP.NET MVC如何处理我们不需要使用全名调用控制器的问题?这是由ASP.NET MVC框架使用路由处理的。我们在Global.aspx.cs中定义路由。路由定义了要调用的控制器以及要对给定url执行的操作,例如Asp.net mvc 不使用全名调用控制器,asp.net-mvc,controller,Asp.net Mvc,Controller,我是ASP.NET MVC新手。我们创建了一个类似于“AdminController”的控制器,但只使用Admin的名称来调用它。ASP.NET MVC如何处理我们不需要使用全名调用控制器的问题?这是由ASP.NET MVC框架使用路由处理的。我们在Global.aspx.cs中定义路由。路由定义了要调用的控制器以及要对给定url执行的操作,例如 routes.MapRoute( "Default", // Route name "
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new {controller = "Home", action = "Index", id = ""}
);
此外,Asp.net MVC更喜欢约定而不是配置。因此,按照惯例,“Home”表示HomeController。您在URL中指定的控制器名称与类名不同,正如操作名称与控制器上的实际方法不同一样。控制器/操作和类/方法之间存在内部映射,MVC在确定需要执行哪些代码时会执行这些映射 通用映射规则是:
- 对于控制器,获取控制器名称(
)并向其添加后缀Admin
,然后搜索具有此名称的类(controller
)AdminController
- 对于操作,获取操作的名称(
)并在控制器上搜索具有相同名称的方法(Details
)ActionResult Details(){}
Edit
的操作,该操作映射到一个方法ActionResult EditUser(){}
MVC的未来版本可能还会添加一个类似的ControllerName
属性,该属性允许将特定的控制器名称显式映射到特定的类。(事实上,我希望他们这样做,以帮助解决在不同区域提供相同控制器名称的不同实现的问题)