このようなMVCコントローラーアクションメソッドがあります
public ActionResult DoSomething(bool special = false)
{
// process the special value in some special way...
return View();
}
特別なフラグのみが異なる 2 つの異なるリンクを使用してこのアクションにアクセスし、フラグを人間が読み取れるルート値として渡したいと考えています。より正確には、リンクは次のようになります。
SomeController/DoSomething
SomeController/DoSomething/Special
現在、アクションリンクを作成しています:
@Html.ActionLink("Just do it", "DoSomething", "SomeController")
@Html.ActionLink("Do it in a special way", "DoSomething", "SomeController", new { special = true}, null)
このコードは、次のようなリンクを生成します。
SomeController/DoSomething/Special
SomeController/DoSomething?special=True
明らかに、2 番目のリンクがなるには特別なルートが必要ですが、SomeController/DoSomething/Special
ある MapRoute の試みでは特別なフラグが無視され、別の MapRoute の試みでSomeController/DoSomething/Special
は特別なルート値を指定しなかったにもかかわらず、両方のリンクがなるようになったため、すべての試みが失敗しました。最初のActionLinkの場合(ルートから取得しただけだと思います)。
boolspecial
を URLにマップし、 SomeController/DoSomething/Special
ActionLink に正しいリンクを生成させる正しい方法は何ですか?