2012-04-03 18 views
0

同じコントローラ内のあるアクションから別のアクションにデータを渡そうとしましたが、これは動作しないようです。私はnullになる。コントローラ間で値を渡す方法は?アクション間でデータを渡す

アクション1

ViewData["ProductId"] = productId; 

アクション2

var productId = ViewData["ProductId"];//Always Null 

答えて

1

あなたはthis.Session["ProductId"]を使用することができますが、このアプローチは、一般的に間違っていると、スケーラブルではない困難な保守コードにつながります。おそらく、入力フィールド(フォーム用)としてレンダリングするか、(リンク用の)URLを生成するために、これをビューに渡す必要があります。

1

TempDataを使用して、次のリクエストまでデータを共有することもできます。

+1

、または'正常に保存'。このアプローチを使用してモデルIDを渡すと、スケーラビリティの問題は軽減されますが、保守性の問題は軽減されません。 – PinnyM

0

どのようにして最初のアクションで2番目のアクションを呼び出しましたか?あなたは

RedircectToAction("Acion2"). 

を呼び出した場合、あなたは次のようにアクションプロパティでパラメータを渡すことができます。TempDataをは通常、「エラーが発生した」のようなほぼリアルタイムのユーザーの通信メッセージのために使用されているが、はい

RedirectToAction("Action2", new { productID= ViewBag.ProductId}); 

public ActionResult Action2(Guid productID) 
{ 
} 
関連する問題