繁体   English   中英

如何在ASP.NET MVC3中的URL中替换_?

[英]How can I replace _ with - in my URL in ASP.NET MVC3?

我将控制器名称设置为“My_Controller”。 我正在寻找一种方法将我的URL从www.mysite.com/My_Controller/My_Action更改为www.mysite.com/my-controller/my-action/

无论如何不使用URL重写器扩展来执行此操作? 如果是这样,怎么样?

您可以使用路由处理程序。

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

..并将它添加到您的路线,如下所示:

routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
        ).RouteHandler = new HyphenatedRouteHandler();

这意味着,只要您有一个名为“Example_Controller”的控制器,其操作名为“Example_Action”,您就可以使用/ example-controller / example-action调用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM