同じコントローラ内のあるアクションから別のアクションにデータを渡そうとしましたが、これは動作しないようです。私はnullになる。コントローラ間で値を渡す方法は?アクション間でデータを渡す
アクション1
ViewData["ProductId"] = productId;
アクション2
var productId = ViewData["ProductId"];//Always Null
同じコントローラ内のあるアクションから別のアクションにデータを渡そうとしましたが、これは動作しないようです。私はnullになる。コントローラ間で値を渡す方法は?アクション間でデータを渡す
アクション1
ViewData["ProductId"] = productId;
アクション2
var productId = ViewData["ProductId"];//Always Null
あなたはthis.Session["ProductId"]
を使用することができますが、このアプローチは、一般的に間違っていると、スケーラブルではない困難な保守コードにつながります。おそらく、入力フィールド(フォーム用)としてレンダリングするか、(リンク用の)URLを生成するために、これをビューに渡す必要があります。
TempData
を使用して、次のリクエストまでデータを共有することもできます。
どのようにして最初のアクションで2番目のアクションを呼び出しましたか?あなたは
RedircectToAction("Acion2").
を呼び出した場合、あなたは次のようにアクションプロパティでパラメータを渡すことができます。TempDataをは通常、「エラーが発生した」のようなほぼリアルタイムのユーザーの通信メッセージのために使用されているが、はい
RedirectToAction("Action2", new { productID= ViewBag.ProductId});
public ActionResult Action2(Guid productID)
{
}
、または'正常に保存'。このアプローチを使用してモデルIDを渡すと、スケーラビリティの問題は軽減されますが、保守性の問題は軽減されません。 – PinnyM