2009-09-01 3 views
0

私はその後、私はこのViewdataをコントローラのすべてのビューに渡すにはどうすればいいですか?

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Create(FormCollection collection, string screenname) 
    { 
     try 
     { 
      /// thats my dataobject which creates 

      DataObj.SaveData(Guid.Empty, collection, screenname); 

      return RedirectToAction("Index", new { ScreenName = ViewData["screenname"] }); 
     } 
     catch 
     { 
      return View("Error"); 
     } 
    } 

インデックスは次のようになります...

public ActionResult Index(string ScreenName) 
    { 
     ///thats my list 
     GetTable = new GetDataTable(ScreenName); 

     return View(GetTable); 
    } 
などの他のアクションでこれのViewDataにアクセスしたい

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Screenname(FormCollection collection) 
    { 
     Viewdata["screenname"] = collection[0]; 

     return RedirectToAction("Index", new { ScreenName = ViewData["screenname"] }); 
    } 

値を選択するドロップダウンリストを持っています

最初に値を選択するとインデックスが正しく実行されます....しかし、ビューデータに再びアクセスしようとすると、値が含まれていないので、 ... または代替の方法でデータを保存および取得できます。

+0

現在受け入れている回答(静的変数渡し)は使用しないでください。 –

答えて

-1

ビューを使用してユーザーからデータを取り出し、それを静的変数に保存し、この変数を使用して他のすべてのビューにデータを渡しました。

ありがとうございました

+2

ひどい!溶液。すべてのユーザーは同じ静的変数セットを取得し、別のユーザーが2番目のユーザーのリダイレクトの間にページにアクセスすると、2番目のユーザーは最初の値を取得します。この人は絶対に使用しないでください。 –

1

これは実際にここでかなり頻繁にカバーされています。ここでの解決方法は、RedirectToAction()を使用する前に必要なデータをTempDataを使って保存することです。

"RedirectToAction"を検索すると、このトピックを扱った多数の記事、such as this oneが見つかります。

フレームワークの次の公式リリースでこれが解決されます。

+0

でも私はtempdataを使うとデータにアクセスできません。それはまだヌルのままです。私はすでにそれを試しました...他のオプション – lucky

+0

プラス私はいくつかのより多くのアクションを持っているので、誰も助けてくださいデータを渡したい – lucky

2

ViewDataオブジェクトは、実行中の特定のアクションに固有です。アクション間でデータを渡すには、TempDataを使用します。 MSDNのthe difference between the twoに関する詳細。

Controller.Sessionプロパティで直接セッション状態に書き込むこともできます。

+1

私は一時的なデータを試したが、それは動作しないようです... – lucky

関連する問題