在ASP.NET MVC中,我们如何在不使用" controller"的情况下创建控制器类。后缀?我无法在网上找到解决方案。 MSDN文档说控制器类名必须以" controller"。
结尾有些专家可以帮助我吗?
谢谢。
杰里
答案 0 :(得分:2)
您必须通过继承DefaultControllerFactory
并覆盖GetControllerType
方法来使用自定义控制器工厂。
// instantiate controllers that doesn't have "Controller" suffix.
public class CustomControllerFactory: DefaultControllerFactory
{
protected override Type GetControllerType(System.Web.Routing.RequestContext requestContext, string controllerName)
{
var controllersNs = "MvcApp.Controllers";
return Type.GetType(string.Format("{0}.{1}", controllersNs, controllerName));
}
}
您必须在Global.asax.cs中注册此控制器工厂。
ControllerBuilder.Current.SetControllerFactory(new CustomControllerFactory());
重要:DefaultControllerFactory
通过缓存类型和其他内容来提高性能,您必须查看source code以获得更好的主意。