これに関する他の投稿をT4MVC OptionalParameter values implied from current contextで読みました。修正が含まれていると思われる最新の T4MVC (2.11.1) を使用しています。です。
現在のコンテキストに基づいて、オプションのパラメーターを入力しています。
例:デフォルトで人の姓順に並べられたリストがあるとしましょう。URLの代わりに名で注文するオプションがあります
http://localhost/list/stuff?orderby=firstname
そのページにいるとき、次のコードを使用して名前順に戻りたいと思います。
@Html.ActionLink("order by last name", MVC.List.Stuff(null))
私が欲しかったリンクは単純でした
http://localhost/list/stuff
URL をシンプルかつ短く保つためのパラメーターを使用せずに、アクション内でデフォルトの動作を呼び出します。ただし、代わりにorderbyが保持され、URL はそのままです
http://localhost/list/stuff?orderby=firstname
どんな助けでも素晴らしいでしょう。最も一般的なケースでは、これによりクエリ パラメータが削除されることはわかっています。削除されなかった特定のケースがあるかもしれません。RenderPartial に含めたページ内に URL がある場合にのみ発生することがわかりました。
私の実際のコードは
<li>@Html.ActionLink("Recently Updated", MVC.Network.Ticket.List(Model.UI.AccountId, "LastModifiedDate", null, null, null, null, null))</li>
<li>@Html.ActionLink("Recently Created", MVC.Network.Ticket.List(Model.UI.AccountId, "CreatedDate", null, null, null, null, null))</li>
<li>@Html.ActionLink("Most Severe", MVC.Network.Ticket.List(Model.UI.AccountId, "MostSevere", null, null, null, null, null))</li>
<li>@Html.ActionLink("Previously Closed", MVC.Network.Ticket.List(Model.UI.AccountId, "LastModifiedDate", null, "Closed", null, null, null))</li>
この問題は、誰かが [以前にクローズ済み] をクリックして?status=closedに移動すると発生します。[最近更新] をクリックすると、ステータス パラメータがなくなります (null が渡されます)。しかし、?status=closed は生成された URL に残ります。
どんな洞察も大歓迎です。
2012 年 10 月 16 日更新
コード:
@html.action("Profile", MVC.Profile.Index())
URLを生成しました:
http://localhost:55059/network/ticket/14441327-128b-e111-af72-0050569e0924?Controller=profile&Action=index
これは特定のページでのみ発生します。これは実際にはかなり危険です...