2

これに関する他の投稿を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

これは特定のページでのみ発生します。これは実際にはかなり危険です...

4

2 に答える 2

0

私がオンライン ソースから集めた情報によると、この動作は T4MVC に起因するものではなく、MVC フレームワーク自体に起因するものです。T4MVCが使用するヘルパー関数についての何か。私のプロジェクトでは、バニラ MVC 構文に切り替えました。as で渡される匿名オブジェクトをモンキー化するとrouteValues、クエリ文字列パラメーターを明示的に制御できます。次のようなことをすると、常に機能します。

@Html.ActionLink("Recently Updated", "Ticket", "Network", new { Id = Model.UI.AccountId, orderby = "LastModifiedDate" }, null))

...そして、次のような HTML を生成します。

<a href="http://localhost:55059/Network/Ticket/14441327-128b-e111-af72-0050569e0924?orderby=LastModifiedDate">Recently Updated</a>
于 2013-10-15T16:29:01.407 に答える
0

誰かがまだこの問題に直面している場合、ここに私が見つけた解決策があります

http://yaweriqbal.wordpress.com/2014/05/25/actionlink-passing-parameter-as-querystring/

于 2014-05-25T13:37:06.790 に答える