私のC#.NET 4 MVC 3アプリケーションには、一連のCRUDページ用の削除コントローラーがあり、削除が成功した後、PostRedirectGetパターンを使用してインデックスコントローラーにリダイレクトします。このページがそのようなアクションによってリダイレクトされなかった場合にのみ、インデックスページにボタンをレンダリングしたいと思います。現在のページがリダイレクトされたかどうか(つまり、PRGリダイレクトの結果として到達したかどうか)を検出する簡単な方法はありますか?
http://blog.simonlovely.com/archive/2008/11/26/post-redirect-get-pattern-in-mvc.aspxを読んだ後、私の現在のアプローチは、メソッドが成功しTempData
た後に削除コントローラーでこれを設定することですDeleteMyEntity
:
try {
MyService.DeleteMyEntity(MyViewModel.MyEntity);
TempData["Redirected"] = true;
args = new RouteValueDictionary(new { Foo = 1, Baa = 2 });
return RedirectToAction("Index", args);
} catch (Exception e)
{
//Logging etc. - redirect should never be reached on exception (and TempData item not set)
throw(e);
}
次に、インデックスコントローラで、この値が存在し、真であるかどうかを確認します。
if (TempData["Redirected"] != null)
{
//we can then do something useful with this
}
私が見るもう1つの機会は、別のアイテムを追加args
してコントローラーでこれを確認することですが、この場合は、を使用することもできますTempData
。TempData
このデータをまたは同様のメカニズムで渡す必要なしに、リクエストでHTTP応答コードを使用してこれを行う方法はありますか?