2017-04-07 76 views
0

我有以下RouteLinkMVC RouteLink URL格式

@Html.RouteLink("Accept Offer", new { controller = "Case", action = "Accept", id = item.CaseId, offerid = item.PxOfferId }, new { @class = "btn btn-success" }) 

哪些格式的网址为:

http://localhost:54644/Clients/Case/Accept/15847?offerid=3103 

我如何格式化的网址是:

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

但随后引起其他页面上的错误。

+1

您需要使用'offerid'的占位符来定义特定路线。 –

+0

尝试在路线配置中添加'offerId',例如:{controller}/{action}/{id}/{offerid}'并声明'offerid'作为'UrlParameter.Optional'。 –

+0

你可以在'RouteConfig'中分享你有的路线定义吗?如果你没有设置,你需要这样做。然后,你将能够实现你需要的url格式 – scgough

回答

1

您在RouteConfig文件中App_Start东东路由(如果您正在使用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 }) 
+0

只有最后一个参数可以标记为'UrlParameter.Optional',你还应该注意到这应该在任何其他匹配路径之前 –

+0

我使用的是MVC 5.如果我首先放置上述路线,那么路线显示正确,但是此时导致每隔一页上出现错误。 – JBoom

+0

这是我把它上面的路线: 'context.MapRoute( “Clients_default”, “客户端/ {控制器}/{行动}/{ID}”, 新{控制器= “登录”,动作= “Index”,id = UrlParameter.Optional} );' – JBoom