これはRedirectToAction
、ブラウザにHTTP 302応答を返すため、ブラウザは指定されたアクションに対してGETリクエストを実行します。HTTPはステートレスであるため、あるアクションで何かを設定して別のアクションで取得することはできません(別のGETリクエストの場合)。
あなたにできることは
1)クエリ文字列を新しいアクションに渡し、次のアクションメソッドでそれを確認し、それに応じてメッセージを表示します。
return RedirectToAction("ThankYou","Account",new {msg="success"});
そしてあなたのThankYouアクションで
public ActionResult ThankYou(string msg)
{
var vm=YourSuccessViewModel();
if(msg="success") // you may do a null checking before accessing this value
{
vm.Message="Saved Successfully";
}
return View(vm);
}
2) Session/TempDataのような一時的な場所に保存します。TempDataは非常に短期間のインスタンスであることが意図されており、現在および後続のリクエスト中にのみ使用する必要があります。
TempData["UserMsg"] = "Saved Successfully";
return RedirectToAction("ThankYou","Account");
アクションでは、ThankYou
それを読んで、必要に応じてユーザーに表示できます。
public ActionResult ThankYou(string msg)
{
var msg = TempData["UserMsg"] as string;
//to do : do what you want with the message and return the view.
}
セッションオブジェクトはTempDataオブジェクトのバッキングストアであり、通常のセッションよりも迅速に、つまり後続のリクエストの直後に破棄されます。