web-dev-qa-db-ja.com

別のコントローラーからViewBag値を渡すMVC

デフォルトのHomeControllerのViewbag.messageに値を設定し、それをShared/_Layout.cshtmlに正常に表示しました。

その後、別のTestControllerを追加しましたが、TestControllerビューで、Viewbag.messageがnullのようです。何が悪いのかわかりますか。

私が間違っている場合は訂正してください。私の理解から、Viewbag.Messageはどこからでも入手できるはずですか?

11
SuicideSheep

ViewBagは、C#4.0の新しい動的機能を利用する動的プロパティです。基本的に、これはViewDataのラッパーであり、コントローラーから対応するビューにデータを渡すためにも使用されます。

  • それはまた、現在の要求の間だけにあります。リダイレクトが発生すると、その値はnullになります。
  • 複雑なデータ型の場合、型キャストは必要ありません。

以下は、永続性のさまざまなメカニズムを示す要約表です。 Summary of ViewBag and the other mechanismクレジット:CodeProjectArticle

29
Ravi Gadag
[HttpPost]
public ActionResult Index()
{
    TempData["Message"] = "Success";
    return RedirectToAction("Index");
}


public ActionResult Index()
{
    ViewBag.Message=TempData["Message"];
    return View();
}
7
Anjana
//one controller to another controller you need to use seesion 
//this is Home controller

[httpPost]
public actionresult Index()
{
    session["Message"] = "Welcome to session tutorial";
    return redirectToAction("Index","About");
}

//now pass to the another About controller

[httpPost]
public actionresult About()
{
    viewbag. message = session["Message"]
    return view();
}
0
saurav singh