0

このような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/SpecialActionLink に正しいリンクを生成させる正しい方法は何ですか?

4

2 に答える 2