2016-03-31 3 views
0

私はASP.NET MVCを初めて使用しています。ちょうど学び始めました。私は、次のよすべてのチュートリアル、記事や書籍がコントローラからViewがコントローラに格納されたViewBagデータとどのくらい正確にアクセスしますか?

「...あなたはViewBagを使用して表示するようにコントローラからデータを送信することができます」のようなものを言う - ビューへ

public ActionResult Index() 
{ 
    ViewBag.Message = "Index Message"; 
    return View(); 
} 

-

<h3>@ViewBag.Message</h3> 

しかし、説明する気に何を誰も、と私は苦労の理解がない(または缶)どのように過ごしていコントローラから送信されたビューへのアクセスこのViewBagデータ?私が知っている何

、フードViewBag下

  1. はコントローラでViewBagがControllerBaseクラスのViewBagプロパティビューで
  2. ViewBagからであるViewDataDictionary
  3. から提示された型でありますWebViewPageクラスのViewBagプロパティ

そしてわかっているから、

  • ビューがコントローラによって格納されたその辞書のデータにアクセスする場合、コントローラとビューの両方がその辞書オブジェクトの同じインスタンスを持たなければなりません。

それでは、私は理解していない、

  • はどのように正確に見るには、コントローラによって保存されたViewBagデータにアクセスしますか?

答えて

1

Controllerクラスのソースコードを見てください。そこ

あなたが表示されます。

protected internal virtual ViewResult View(string viewName, string masterName, object model) 

あなたはどちらreturn View()を呼び出すときに呼び出されるものです。このメソッドはActionResultを作成し、コントローラからViewDataを渡します。つまり、両方とも辞書オブジェクトの同じインスタンスを共有します。

関連する問題