2

2 つの RouteData.Values をアクションに渡すかみそりビューで URL を作成しようとしています。

これはコードです:

<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

);

URL が次のようになっている理由:

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

このようではありません:

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

string.Format を使用できることは理解していますが、むしろ MVC ヘルパー ソリューションを見つけるためです

4

2 に答える 2

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
于 2012-05-07T04:51:58.287 に答える
1

私の推測では、threadIdとの両方messageIdがオプションの場合、次の URL はどのように解決されるでしょうか: http://localhost/Site/Board/Messages/955 ?

UrlParameter.Optionalから削除してみてくださいthreadId(そして、そのために別のルートを使用する可能性があります)。

于 2012-05-07T04:57:01.027 に答える