Asp.net mvc 4 Visual Studio MVC4自动Url路由,用于所有Url';s

Asp.net mvc 4 Visual Studio MVC4自动Url路由,用于所有Url';s,asp.net-mvc-4,controller,routing,Asp.net Mvc 4,Controller,Routing,大家好,我正在localhost中使用VS13 MVC4,对于我想要的url路由,VS将自动作为www.sitename.com/about-us为所有url工作,但现在它正在获得下划线(41;而不是破折号(-)如何进行更改,并在url中的每个新词之前获得连字符(-) 以下是答案,我也将其添加到我的问题中,供大家看到: public class HyphenatedRouteHandler : MvcRouteHandler { protected override IHttpHandl

大家好,我正在localhost中使用VS13 MVC4,对于我想要的url路由,VS将自动作为www.sitename.com/about-us为所有url工作,但现在它正在获得下划线(41;而不是破折号(-)如何进行更改,并在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())
    );    
  }
}

谢谢大家。

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

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

如果你想在asp.net mvc中获得漂亮的url,那么你应该为你的控制器注册新的路由

  • 从应用程序目录打开
    App\u Start
    目录中的
    RouteConfig.cs
  • RouteConfig
    类的
    RegisterRoutes
    方法中,注册一条如下的新路由-

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

如果你想在asp.net mvc中获得漂亮的url,那么你应该为你的控制器注册新的路由

  • 从应用程序目录打开
    App\u Start
    目录中的
    RouteConfig.cs
  • RouteConfig
    类的
    RegisterRoutes
    方法中,注册一条如下的新路由-

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

是否有任何关于它的详细链接,因为正如我所说的,我并不确切知道,仍然在了解它。。。没有关于它的任何详细链接,因为正如我所说的,我并不确切知道,仍然在了解它。。。Thx@J.Electro用这个。我现在是手机用户,无法提供链接,但这是我所说的选项之一谢谢大家,我正在努力,但无法完全理解,我也想问一下,我是否会为我的链接一个接一个地提供链接(据我所知)如果你在应用程序中的任何地方使用这些URL,那么你也应该一个接一个地更改这些URL,我认为当你创建一个控制器时,你应该为这些URL创建一个新的路由。感谢上帝,我没有太多的页面:)谢谢大家的帮助:)@J.Electro继续。我现在是手机用户,无法提供链接,但这是我所说的选项之一谢谢大家,我正在努力,但无法完全理解,我也想问一下,我是否会为我的链接一个接一个地提供链接(据我所知)完成项目然后继续工作不是更好吗?更好,但是如果你在应用程序中的任何地方使用这些URL,那么你也应该一个接一个地更改这些URL,我认为当你创建一个控制器时,可以为此创建一个新的路由。感谢上帝,我没有很多页面:)谢谢大家的帮助:)