在MVC 4中,我们希望保留我们当前的命名约定,该约定用下划线分隔所有单词,例如: Store_Controller
。但是,这会导致网址看起来像http://www.blah.com/Store_
,这实际上是不受欢迎的。
我在其他地方看到过你可以通过MVC框架中的一些深层次的问题来解决这个问题,制作自己的控制器工厂等等,但肯定有更简单的方法来配置它。是否有一些新的注释或配置设置多年来已经引入现有方法没有考虑到?
答案 0 :(得分:1)
在MVC5中,您可以使用Attribute Routing。
但是在MVC4中,您可以执行以下操作(请注意,您必须同时执行这两项操作,而不是其中之一):
配置路由以处理此问题:
routes.MapRoute(
name: "Default",
url: "Store/{action}/{id}",
defaults: new { controller = "Store_", action = "Index", id = UrlParameter.Optional}
);
使用自定义控制器工厂(也很容易):
public class CustomControllerFactory : DefaultControllerFactory
{
protected override Type GetControllerType(System.Web.Routing.RequestContext requestContext, string controllerName)
{
return base.GetControllerType(requestContext, controllerName + "_");
}
}
答案 1 :(得分:-1)
这不是一个你不能使用的正确模式"下划线" " _"拆分控制器名称
这是少数网址:
mysite/{username}/{action} ~ /mysite/jatten/login
public/blog/{controller}-{action}/{postId} ~ /public/blog/posts-show/123
{country}-{lang}/{controller}/{action}/{id} ~ /us-en/products/show/123
products/buy/{productId}-{productName} ~ /products/but/2145-widgets