C# MVC路由链接URL格式

C# MVC路由链接URL格式,c#,asp.net-mvc,C#,Asp.net Mvc,我有以下路线: 将URL的格式设置为: http://localhost:54644/Clients/Case/Accept/15847?offerid=3103 如何将URL格式化为: http://localhost:54644/Clients/Case/Accept/15847/3103 谢谢 默认路线: context.MapRoute( "Clients_default", "Clients/{controller}/{action}/{id

我有以下路线:

将URL的格式设置为:

http://localhost:54644/Clients/Case/Accept/15847?offerid=3103
如何将URL格式化为:

http://localhost:54644/Clients/Case/Accept/15847/3103
谢谢

默认路线:

    context.MapRoute(
        "Clients_default",
        "Clients/{controller}/{action}/{id}",
        new { controller = "Login", action = "Index", id = UrlParameter.Optional }
    );
如果我将此项放在定义的路线中的第一位,则路线将起作用:

    context.MapRoute(
        name: "Accept Offer",
        url: "Clients/{controller}/{action}/{id}/{offerid}",
        defaults: new { controller = "Case", action = "Accept", id = 0, offerid = UrlParameter.Optional }
    );
但是会在其他页面上导致错误。

如果您使用的是mvc3/4,则可能会在Global.asax文件中配置路由:

routes.MapRoute(
    name: "MyCaseRoute",
    url: "/clients/{controller}/{action}/{id}/{offerId}",
    defaults: new { controller = "Case", action = "Accept", id = UrlParameter.Optional, offerId = UrlParameter.Optional }
);
用法:

@Html.RouteLink("My Link Text", routeName: "MyCaseRoute", routeValues: new { controller = "case", action = "accept", id = 1, offerId = 2 })

您需要使用占位符为offerId定义一个特定路由,尝试在路由配置上添加offerId,如下所示:{controller}/{action}/{id}/{offerId},并将offerId声明为UrlParameter.Optional。您可以共享RouteConfig中的路由定义吗?如果你没有设置,你需要这样做。然后您将能够实现您的url格式require@scgough刚刚将该信息添加到问题中。只有最后一个参数可以标记为URLParmeter。可选。您还应该注意,这应该在任何其他匹配的路由之前。我正在使用MVC 5。如果我先放置上面的路由,则该路由将正确显示,但这会导致其他页面出现错误。这是我放置在上面的路由:context.maprote Clients\u default,Clients/{controller}/{action}/{id},new{controller=Login,action=Index,id=urlparmeter.Optional} ;啊,开始工作了。感谢您提供的信息,我得到的错误是因为默认控制器和我在映射路由上的操作导致的,因为Accept操作需要offerid参数。你的信息对我很有帮助。
@Html.RouteLink("My Link Text", routeName: "MyCaseRoute", routeValues: new { controller = "case", action = "accept", id = 1, offerId = 2 })