允许在连接asp.net mvc 2控制器名称的连字符中使用连字符

[ActionName("about-us")]
public ActionResult EditDetails(int id)
{
    // your code
}

上述的行动,但我希望能够为控制器做同样的(或类似),即在URL名称中也有一个连字符。 有没有简单的方法来实现这一点(我尝试了ActionName属性,但没有运气)


最简单的方法是添加自定义路线:

routes.MapRoute("RouteName", "controler-name/{action}/{id}", new { controller = "ControllerName", action = "Index", id = "" });

虽然可能,但我还没有看到过像这样的控制器名称属性。


您可以使用自定义路由处理程序为您提供所需的功能:

public class HyphenatedRouteHandler : MvcRouteHandler
{
    protected override IHttpHandler GetHttpHandler(RequestContext requestContext)
    {
        requestContext.RouteData.Values["controller"] = requestContext.RouteData.Values["controller"].ToString().Replace("-", "_");
        requestContext.RouteData.Values["action"] = requestContext.RouteData.Values["action"].ToString().Replace("-", "_");

        return base.GetHttpHandler(requestContext);
    }
}

路线应该使用该处理程序进行注册:

var route = routes.MapRoute(
    "Some Action",
    "{controller}/{action}/{id}"
);

route.RouteHandler = new HyphenatedRouteHandler();

这里有一个类似的quastion:ASP.net MVC支持连字符的URL


也许这工作:

public class CustomControllerFactory : DefaultControllerFactory {

   protected override Type GetControllerType(RequestContext requestContext, string controllerName) {
      return base.GetControllerType(requestContext, controllerName.Replace("-", ""));
   }
}
链接地址: http://www.djcxy.com/p/23359.html

上一篇: allow hyphens in URLs for asp.net mvc 2 controller names

下一篇: How to use dashes in HTML