私のMVCプロジェクトでは、提出時に同じThankYouページにリダイレクトする2つのフォームがあります。なぜViewBagが空ですか?
2つのフォームのコントローラで、私はViewBagにThankYouページのテキストを保存しました。私はこのようなViewBageを設定し、コントローラ上の
:
if (result == "success")
{
ViewBag.ThankYouText = "We have received your Contact us request."
return RedirectToAction("Index", "ThankYou",ViewBag);
}
そしてありがとうビューの私はそれを得る:
<p>ViewBag.ThankYouText</p>
しかし、私は私のありがとうのページには何も取得しないままにします。
私は純粋なMVCに慣れていますので、間違ったことをしているに違いないでしょうか?
'ViewBag'は、コントローラからビューにデータを渡すためのものです。別の方法にリダイレクトし、すぐに値が失われます。一つのオプションは 'TempData'を使ってメソッドを他のメソッドに渡すことです。もう1つは 'return RedirectToAction(" Index "、" ThankYou "、new {message =" ... "});'を使い、 'ThankYou()'メソッドに 'string message'というパラメータを追加することです。 –
あるコントローラのアクションから別のコントローラのアクションにデータを渡すために 'TempData'を使用する必要があります。ビューバックを設定することができます。それ以外の場合はTempDataも機能します。 –
@StephenMueckeアイデアをありがとうございます。 'tempData'を使用するよりも、私はちょうどビューの値を取得する方法を確認していますか? – user3378165