我是ASP.NET MVC的新手。我们创建一个像这个'AdminController'这样的控制器,但只调用Admin名称。 ASP.NET MVC如何处理这个问题我们不需要用全名调用控制器?
答案 0 :(得分:1)
这是由使用Routes的Asp.Net MVC框架处理的。我们在Global.aspx.cs中定义路由。该路由定义了要调用的控制器以及对给定URL执行的操作,例如
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new {controller = "Home", action = "Index", id = ""}
);
Asp.net MVC也更喜欢约会而不是配置。因此,作为一个惯例'Home'意味着HomeController。
答案 1 :(得分:1)
您在URL中指定的控制器名称与类名称不同,就像操作名称与控制器上的实际方法不同。控制器/操作与MVC在确定需要执行的代码时所执行的类/方法之间存在内部映射。
通用映射规则是:
Admin
)并向其添加后缀Controller
并搜索具有此名称(AdminController
)的类。Details
)并在控制器上搜索具有相同名称(ActionResult Details() {}
)的方法。但是,目前MVC支持通过ActionName
属性将操作显式映射到具有不同名称的方法。因此,您可以将一个名为Edit
的操作映射到方法ActionResult EditUser() {}
,例如。
未来版本的MVC可能还会添加类似的ControllerName
属性,允许将特定控制器名称显式映射到特定类。 (事实上,我希望他们这样做,以帮助解决在不同领域提供相同控制器名称的不同实现的问题)