Zugriff auf Controller-variable in View MVC
Habe ich angefangen, MVC und ich habe ein einfaches Projekt, das einem controller, der als Rückgabe einen Wert von entity FrameWork. Ich habe einen controller für die index-Seite, die Sie visual studio-setup standardmäßig in der Vorlage.
Ich hoffe, dass dieser Wert wird zurückgegeben, um die index-Seite der website.
Controller-code
MISEntities db = new MISEntities();
public ActionResult Index()
{
ViewBag.Message = "Real Time Production";
var scrap = from r in db.tbl_dppIT
select r.CastGood;
return View(scrap);
}
Wie erhalte ich Zugriff auf die var-Schrott mit razor?
Ich habe mir bei der viewbag-Methode und andere razor-syntax, kann aber nicht scheinen, um herauszufinden, wie ich auf dieses Element zugreifen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur weil der controller-variable wird deklariert, mit der
var
Stichwort bedeutet nicht, dass es keine geben. Vielmehr, das sagt C#, dass der Typ zufällig durch seinen Kontext (in diesem Fall einIEnumerable<T>
welcher Art auch immertbl_dppIT.CastGood
ist).So, die anderen drei Antworten sind teilweise richtig, müssen Sie definieren, welche Art von Modell übergeben wird, in den Blick über die razor Stichwort
@model
wie bereits von den anderen Antworten:Gibt es eine alternative zu den drei Antworten schon angegeben, und das ist kleben der
scrap
variable in derViewBag
im controller:Beim Zugriff auf die expando-Eigenschaft
Scrap
von derViewBag
im Blick, es wird ein dynamisches Objekt, so dass Sie nicht bekommen Hilfe von IntelliSense. Aber, es ist ein weiterer Weg, nur, damit Sie wissen, alle Möglichkeiten.UPDATE:
Basierend auf Ihre Kommentare unten, es sieht aus wie wenn CastGood ist eine Datenbank, die Spalte darf null sein und deren Typ ist
int
, dann würden Sie wollen:HTH.
1[System.Nullable
1[System.Int32]]', sondern dieses Wörterbuch erfordert ein modellelement des Typs " System.Sammlungen.Generisches.IEnumerable`1[MvcApplication1.Modelle.tbl_dppIT]'.@model MvcApplication1.Models.tbl_dppIT
. Das kann schon einIEnumerable<T>
aus EF (oder was auch immer ORM, die Sie verwenden).1[System.Nullable
1[System.Int32]]', sondern dieses Wörterbuch erfordert ein modellelement des Typs 'MvcApplication1.Modelle.tbl_dppIT'.scrap
variable im controller. Was auch immer dieser Typ ist, das ist, was geben Sie Ihren@model
werden muss. Entweder das, oder verwenden Sie dieViewBag
- aber wieder, ohne die IntelliSense-Unterstützung, da es eindynamic
.@model
sollte vom TypIEnumerable</* type of CastGood /*>
da das ist, was zurückgegeben wird, indem Sie die LINQ-Abfrage die Einstellungscrap
im controller. Also, wennCastGood
ist einint
, dannIEnumerable<int>
. WennCastGood
ist ein konkretes Objekt, dannIEnumerable<CastGood>
usw.1[System.Nullable
1[System.Int32]], Aber seine Suche für dieses System.Sammlungen.Generisches.IEnumerable`1[System.Int32]Müssen Sie deklariert den Typ der Variablen Schrott wie das Modell im inneren die Ansicht mit der
@model
Stichwort.Sehen Teil 3: Views und ViewModels von den MVC Music Store Beispiel.
Müssen Sie stark geben die Ansicht ein, und es wird als Modell-Instanz.