我正在尝试在剃刀视图中构建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帮助器解决方案
答案 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)
我的猜测是:如果threadId
和messageId
都是可选的,那么如何解析以下网址:http://localhost/Site/Board/Messages/955?
尝试从UrlParameter.Optional
移除threadId
(并可能使用不同的路线)。