允许在连接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