2012-01-10 15 views
7

ControllerからViewにランダムstringを渡そうとしています。ViewDataを使用してASP.NET MVC3のControllerからViewに文字列を渡す

[HttpPost] 
    public ActionResult DisplayForm(UserView user) 
    { 
     //some data processing over here 
     ViewData["choice"] = "Apple"; 

     return RedirectToAction("Next", "Account"); 
    } 

は今、私は次のように作成された私の見解Next.cshtmlにそのデータ値「アップル」を渡したい:

//View: Next.cshtml 

    @{ 
    ViewBag.Title = "Thanks for registering"; 
    Layout = "~/Content/orangeflower/_layout.cshtml"; 
    } 
    <p>Your favorite fruit is:</p>@ViewData["choice"] 

しかし、私はできませんよ。ここ

は私Controllerコードですプロジェクトが実行されたときにブラウザで自分のデータを見ることができます。ここで

はスナップショットです:

1)デバッグ、値を示すコントローラの場合:

enter image description here

2)ブラウザビューが

"アップル" の値が表示されません

enter image description here

3)さらにデバッグして私のNext.cshtmlを表示してください。 enter image description here

なぜ値が正しく表示に渡されないのですか。 NextDisplayFormの両方のコントローラが同じコントローラ内にあります。AccountController.cs、まだ値が表示されません。

誰かが私を解決するのに役立つことができますか?

答えて

11

ビューをレンダリングしていない、リダイレクトしています。あなたはViewDataにそれを追加した後、このビューを返す必要がビューTYOいくつかの情報を渡したい場合は、次の

[HttpPost] 
public ActionResult DisplayForm(UserView user) 
{ 
    //some data processing over here 
    ViewData["choice"] = "Apple"; 

    return View(); 
} 

リダイレクト後に生き残るメッセージを渡したい場合は、代わりにViewDataTempDataを使用することができます。ビューは、それを読むことができるように

[HttpPost] 
public ActionResult DisplayForm(UserView user) 
{ 
    //some data processing over here 
    TempData["choice"] = "Apple"; 

    return RedirectToAction("Next", "Account"); 
} 

[次へのアクションの内部で、あなたはTempDataをからデータをフェッチでき、ViewDataを内に保管してください。

+0

ohh私はリダイレクトしていない場合、私のコードごとにリターンビュー( "次へ"、 "アカウント")を書く必要がありますか? –

+0

@ParthDoshi、はい、ViewDataを直接使用する場合。しかし、Redirect-After-Postパターンを保持したい場合は、私の答えに示すようにTempDataを使うことができます。 –

+0

ありがとう! :) –

1

ポストリダイレクトを実行しています。この要求に対してViewDataが設定されており、リダイレクトを返し、ViewDataをクリアした後、データを持たない別の要求が発生します。代わりにTempDataを使用し、次のリクエストで自動的にViewDataに追加されます。

+1

ありがとう!それは確かに非常に有用でした。 –

+0

非常に良い質問レイアウトと説明。 –

+0

ありがとう!時々私はStackOverflowが2つの答えを受け入れるようにすべきだと思います.1つはプライマリ、もうひとつはセカンダリの答えです。私は別のユーザーからの回答を得ましたが、私のコードで間違いを理解するのにもあなたの答えが十分であると感じました。 –

関連する問題