所有网址的Visual Studio MVC4自动网址路由

时间:2016-03-12 19:58:11

标签: asp.net-mvc-4 controller routing

大家好我在本地主机上使用VS13 MVC4,对于url路由我希望VS能自动为所有URL工作,如www.sitename.com/about-us但是现在得到下划线(_)没有破折号( - )如何进行更改并在url

中的每个新单词之前获取连字符( - )

以下是答案我也将其添加到我的问题中,每个人都可以看到:

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);
    }

}



public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {

        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.Add(
        new Route("{controller}/{action}/{id}",
            new RouteValueDictionary(
                new { controller = "Default", action = "Index", id = "" }),
                new HyphenatedRouteHandler())
    );    
  }
}

谢谢大家。

2 个答案:

答案 0 :(得分:3)

如果你想在asp.net mvc中使用漂亮的网址,那么你应该为你的控制器注册新的路由。

  • RouteConfig.cs目录中的应用程序目录open App_Start
  • RegisterRoutes类的RouteConfig方法中注册了这样的新路线 -

        routes.MapRoute(
            name: "AboutUs",
            url: "sitename/about-us",
            defaults: new { controller = "About_Us", action = "Index" }
        );
    

答案 1 :(得分:1)

_将在路由中自动转换为 - 。另一种方法是自己设置路由