Man kann die Daten vom Controller zur anzeigenden View mit
3 Möglichkeiten übergeben. Wobei die erste Variante die Typ-stabilste Variante
ist.
Dabei werden die View-Daten intern als ViewDataDictionary
übergeben
1) als View(actArtikel)
2) als ViewData["Artikel"]
3) als ViewBag.Artikel
1) Übergabe als
View-Parameter
(empfohlen)
Man übergibt die Model-Daten als Parameter in der return
Ausgabe.
Das heißt, man erstellt eine Menge an Daten beim Aufruf
der Controller-Action und übergibt diese in der return-Zeile an die anzuzeigende
View.
public IActionResult Detail()
{
//--------< Detail() >------------
Artikel actDetail = new Artikel { Title = "Artikel1" };
return View(actDetail);
//--------</ Detail() >------------
}
|
Und in der View über das einbinden von @model entnommen
@model ArtikelWeb.Models.Artikel
@{
ViewData["Title"] = "Detail";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>@Model.Title</h2>
|
In Visual Studio: ArtikelController bildet Daten aus dem
Model und übergibt diese an die View
2) Übergabe mit
ViewData
Die Daten werden in ein ViewData eingefügt
//Alternative
1
ViewData["Artikel"] =
actDetail;
return View();
|
Und in der View mit den notwendigen Casting-Umwandlungen
entnommen
@model
ArtikelWeb.Models.Artikel
@{
ViewData["Title"] = "Detail";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>@Model.Title</h2>
@(((Artikel) ViewData["Artikel"]).Title )
|
3) Alternative Übergabe
mit ViewBag
Microsoft empfiehlt oft die Übergabe mit ViewBag und
einer dynamischen Variable. Das heißt man übergibt im Controller an
ViewBag.Dynamische_Variable und liest die dynamische Variable wieder in der
View aus.
Im Controller
//Alternative 2 ViewBag
ViewBag.Artikel = actDetail;
return View();
|
In der
View
Nachteil: die dynamische Variable muss namentliche
immer übereinstimmen, ansonsten entsteht ein Laufzeitfehler.
Und in
der View