MVC 3 - 具有4个参数的RouteUrl

时间:2012-05-07 04:48:27

标签: asp.net-mvc-3

我正在尝试在剃刀视图中构建URL,它会将2个RouteData.Values传递给我的操作。

这是代码:

<input type="button" value="View" onclick="location.href='@Url.RouteUrl("ViewMessage", new { threadId = 955, messageId = 11 })'" />

在Global.asax中,我定义了以下内容:

routes.MapRoute(
"ViewMessage", // Route name
"{controller}/{action}/{threadId}/{messageId}", // URL with parameters
new { controller = "Board", action = "Messages", threadId = UrlParameter.Optional, messageId = UrlParameter.Optional } // Parameter defaults

);

为什么我的网址看起来像这样:

http://localhost/Site/Board/Messages/955?messageId=11

而不是这样:

http://localhost/Site/Board/Messages/955/11

我知道我可以使用string.Format,而是找到MVC帮助器解决方案

2 个答案:

答案 0 :(得分:1)

尝试以下路线

routes.MapRoute(
"ViewMessage", // Route name
"{controller}/{action}/{threadId}/{threadId}/{messageID}", // URL with parameters
new { controller = "Board", action = "Messages", threadId = UrlParameter.Optional, messageId = UrlParameter.Optional } // Parameter defaults

答案 1 :(得分:1)

我的猜测是:如果threadIdmessageId都是可选的,那么如何解析以下网址:http://localhost/Site/Board/Messages/955

尝试从UrlParameter.Optional移除threadId(并可能使用不同的路线)。