3

ユーザーが「非アクティブ」なクライアントを表示 (または非表示) できる ActionLink を持つクライアントのリストを含むページがあります。はshowInactive=True、コントローラーへのクエリ文字列として URL に添付されます。「非アクティブ」なクライアントを表示したら、そのうちの 1 つを編集しますが、変更を保存するか、リストに戻ると、クエリ文字列がなくなります。これらのリクエスト間でクエリ文字列を永続化する最良の方法は何ですか? TempData ディクショナリを試してみましたが、明らかに、処理するように設計されていないものに使用しようとしていました。

4

2 に答える 2

6

returnUrlこれを実現する簡単な方法は、次のようにアクションにパラメーターを追加することです。

[HttpPost]
public ActionResult Edit(int id, ClientEditModel model, string returnUrl)
{
    if (!ModelState.IsValid) return View();
    try
    {
        // do something
        return Redirect(returnUrl);
    }
    catch
    {
        return View();
    }
}

次に、あなたの見解では、あなたはあなたの行動を次のように呼びます:

@Html.ActionLink("Edit", "Edit", new { id = Model.Id, returnUrl = Request.RawUrl })

この設定では、ユーザーが編集を完了すると、以前とまったく同じ場所に戻され、showInactiveページ番号、検索条件、並べ替え順序など、リストに含まれる可能性のあるその他のパラメーターも保持されます。 、など。

于 2011-05-19T02:33:05.057 に答える
1

クエリ文字列パラメーターを編集ページに渡し、その値を非表示のフォーム フィールド パラメーターとして追加します。存在しない場合は、デフォルトで false になります。このようにして、編集投稿を実行して処理を行うと、バインドされたモデル/フォームコレクション/などから値を引き出し、その値に基づいて、適切なクエリ文字列パラメーター値でリダイレクトを実行できます。

return this.RedirectToAction("ListClients", new { showInactive = *INSERT THE VALUE* });

に変換されます

/CurrentController/ListClients?showInactive=*value*
于 2011-05-19T01:01:07.557 に答える