rkw*_*rkw 5 asp.net-mvc controller routes naming-conventions classname
这是一个新手问题......
我正在查看默认的asp.net mvc3项目,并注意到有一个名为的控制器:
public class AccountController : Controller
Run Code Online (Sandbox Code Playgroud)
我查看了整个代码,找不到指定AccountController映射到/ Account /的URL的地方.
我发现,您可以使用路由的改变routes.MapRoute(..)的Global.asax,但我还是不知道他们指定的AccountController映射到/帐号/.
如果从类名中假设它,那么这是否意味着所有控制器类都必须命名为xxxxxController?
是的,你是对的,所有控制器都需要遵循结尾的命名约定"Controller".
ControllerName在CodePlex上的ASP.NET MVC代码中查看属性:
public virtual string ControllerName {
get {
string typeName = ControllerType.Name;
if (typeName.EndsWith("Controller", StringComparison.OrdinalIgnoreCase))
{
return typeName.Substring(0, typeName.Length - "Controller".Length);
}
return typeName;
}
}
Run Code Online (Sandbox Code Playgroud)
无论如何,您可以使用自己的控制器工厂更改命名约定.
希望有所帮助.
是的,这是MVC框架的一个关键方面,称为CoC,Convention over Configuration.我们的想法是,只要您愿意遵循类名,方法名,文件夹结构等内容的默认约定,就可以最大限度地减少工作所需的工作量.如果你想偏离那些你当然可以做的约定,你只会努力.
MVC框架中有许多这样的项目.除了所有控制器都是名为XxxxController的类的约定之外,还有一个约定,即在名为View\Xxxx\Yyyyy.cshtml的文件夹中找到所有视图.
| 归档时间: |
|
| 查看次数: |
2112 次 |
| 最近记录: |