ASP.NET MVCにおけるviewData、viewBagとtemplateDataの違い
2886 ワード
MVC 3からはビューデータがViewBag属性でアクセスでき、MVC 2ではViewDataが使用される.MVC 3にはViewDataの使用が残っている.ViewBagはダイナミックタイプ(dynamic)、ViewDataはワードの典型的な(Dictionary).viewDataはviewBagよりも速く、viewPageでデータをクエリーするにはデータ型を変換する必要がありますが、viewBagではデータ変換は必要ありません.TempDataは、ビューにデータを渡すためにも使用できます.ただし、ViewDataとViewBagのライフサイクルはViewと同じであり、現在のViewにのみ役立ちます.一方、TempDataは、webformのSeesionのように、異なるActionで値を伝えることができます.
1、viewData.
ControllerでViewDataを使用するには:
2、viewBag.
ControllerでviewBagを使用するには:
ControllerでTempDataを使用するには:
まとめ:ViewBagは本質的にViewDataであり、層Dynamic制御が多くなっただけであるが、ViewDataはタイプ変換が必要である.TempDataとViewBag、ViewDataの違いはライフサイクルが異なり、ViewData、ViewBagのライフサイクルはviewと同じで、TempDataは異なるActionで値を伝えることができますが、彼が一度呼び出す値は削除されます.
1、viewData.
ControllerでViewDataを使用するには:
<span style="white-space:pre"> </span> ViewData["Title"] = " Using ViewData";
List<string> modules = new List<string>();
modules.Add("Admin module");
modules.Add("ShoppingCart module");
modules.Add("CMS module");
ViewData["modules"] = modules;
return View();
UsingViewData Viewに対応するcshtml:<h1>@ViewData["Title"]</h1>
<div>
Project Details:<br />
<div>
module List :
<ul id="modulelist">
@foreach ( var module in ViewData["modules"] as List<string> )
{
<li>
@module
</li>
}
</ul>
</div>
</div>
皆さんは、ここでタイプ変換が必要であることに気づきました.2、viewBag.
ControllerでviewBagを使用するには:
<span style="white-space:pre"> </span> ViewBag.Title = " Using ViewBag";
List<string> modules = new List<string>();
modules.Add("Admin module");
modules.Add("ShoppingCart module");
modules.Add("CMS module");
ViewBag.modules = modules;
return View();
ViewUsingViewBagのcshtmlに対応するViewBag:<h1>@ViewBag.Title</h1>
<div>
Project Details:<br />
<div>
module List :
<ul id="modulelist">
@foreach ( var module in ViewBag.modules )
{
<li>
@module
</li>
}
</ul>
</div>
</div>
3、TempData.ControllerでTempDataを使用するには:
<span style="white-space:pre"> </span>TempData["abc"] = "this is tempdata";
return View();
ビューでTempDataを使用するには、次の手順に従います.@TempData["abc"]
ここでは、TempDataの値が一度取った後に自動的に削除されることがわかります.このとき、私はページをリフレッシュすると、TempData[「abc」]がNullになります.まとめ:ViewBagは本質的にViewDataであり、層Dynamic制御が多くなっただけであるが、ViewDataはタイプ変換が必要である.TempDataとViewBag、ViewDataの違いはライフサイクルが異なり、ViewData、ViewBagのライフサイクルはviewと同じで、TempDataは異なるActionで値を伝えることができますが、彼が一度呼び出す値は削除されます.