Ich sah die ViewBag
in MVC 3. Was ist der Unterschied zu ViewData
in MVC 2?
Antworten
Zu viele Anzeigen?ViewBag
- Es gibt Type Object zurück.
- Es ist ein
dynamic
Eigenschaft vonControllerBase
Klasse. ViewBag
funktioniert nur mit .NET Framework 4.0 und höher.- Es erfordert kein TypeCasting vor der Verwendung, da
ViewBag
Eigenschaft istdynamic
in der Natur. ViewBag
gibt Dynamic Type Object zurück und seine Eigenschaften sind auchdynamic
.- Es ist etwas schneller als
ViewData
.
AnsichtDaten
- Sie gibt eine Sammlung von Schlüssel-Wert-Wörterbuchpaaren zurück.
ViewData
ist ein Wörterbuchobjekt und eine Eigenschaft vonControllerBase
Klasse.ViewData
ist schneller alsViewBag
.- Typkonvertierungscode ist beim Aufzählen erforderlich, da es sich um ein Dictionary Pair Collections handelt.
ViewData
gibt das Objekt zurück (der Typ des Schlüssel-Wert-Paares und der Wert sind vom Typ Objekt, so dass Sie vor der Verwendung einen Cast vornehmen müssen)
public ActionResult Index()
{
ViewBag.Name = "";
return View();
}
public ActionResult Index()
{
ViewData["Name"] = "Arun Prakash";
return View();
}
Aufruf in der Ansicht
@ViewBag.Name
@ViewData["Name"]
ViewBag und ViewData sind zwei Mittel, die verwendet werden, um Informationen vom Controller zur Ansicht in ASP.Net MVC zu übergeben. Das Ziel der Verwendung beider Mechanismen ist es, die Kommunikation zwischen Controller und View zu ermöglichen. Beide haben eine kurze Lebensdauer, d.h. der Wert von beiden wird null, sobald die Umleitung stattgefunden hat, d.h. sobald die Seite von der Quellseite (wo wir den Wert von ViewBag oder ViewData gesetzt haben) zur Zielseite umgeleitet wurde, werden sowohl ViewBag als auch ViewData null.
Trotz dieser Ähnlichkeiten sind beide (ViewBag und ViewData) zwei verschiedene Dinge, wenn wir über die Implementierung von beiden sprechen. Die Unterschiede sind wie folgt:
1.) Wenn wir beide Implementierungen analysieren, werden wir feststellen, dass ViewData eine Dictionary-Datenstruktur ist - ein Dictionary of Objects, das von ViewDataDictionary abgeleitet ist und auf das man über Strings als Schlüssel zu diesen Werten zugreifen kann, während ViewBag die in C#4.0 eingeführten dynamischen Funktionen nutzt und eine dynamische Eigenschaft ist.
2.) Beim Zugriff auf die Werte von ViewData müssen wir die Werte (Datentypen) typisieren, da sie als Objekte im ViewData-Wörterbuch gespeichert sind, aber es besteht keine solche Notwendigkeit, wenn wir auf den Wert im Fall von ViewBag zugreifen.
3.) In der ViewBag können wir den Wert wie folgt einstellen:
ViewBag.Name = "Value";
und können wie folgt zugreifen:
@ViewBag.Name
Im Falle von ViewData können die Werte wie folgt eingestellt und abgerufen werden: ViewData wie folgt einstellen:
ViewData["Name"] = "Value";
und Zugriff auf den Wert wie folgt
@ViewData["Name"]
Für weitere Einzelheiten klicken Sie hier:
- See previous answers
- Weitere Antworten anzeigen