Die übergabe-Liste, um in asp.net mvc
Hier ist meine action-Methode vom controller.
public class MoviesController : Controller
{
private MovieDBContext db = new MovieDBContext();
//GET: /Movies/
public ActionResult Index()
{
return View( db.Movies.ToList() );
}
}
Wie es gesehen werden kann, eine List
weitergegeben werden View
dass ist der Grund, warum ich erwarte, um mit ihm zu arbeiten, als List
im view
aber in View
es funktioniert wie IEnumerable
Folgenden wird die erste Zeile aus View
@model IEnumerable<MVCWebApplication2.Models.Movie>
Warum übergebenen Wert war List
verhält sich so, als IEnumerable
?
Ist IEnumerable
super Klasse List
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
List<T>
implementiert dieIEnumerable<T>
Schnittstelle:http://msdn.microsoft.com/en-us/library/6sh2ey19(v=vs. 110).aspx
Es ist in der Regel eine best practice, um zu versuchen zu arbeiten mit Schnittstellen, wo möglich, halten Sie Ihren code entkoppelt, so dass ist, warum die
View
war eingerüstet, wie die. In diesem Fall können Sie pass alle anderenMovie
Sammlung, dieIEnumerable<T>
zu IhremView
, und IhreView
würde gerne Rendern, ohne Frage.Also stellen Sie sich vor, Sie haben einen weiteren
Action
in einigen anderenController
wie:Weil
Queue<T>
implementiertIEnumberable<T>
,movies
erhalten gerendert, die von den gleichenView
ohne irgendwelche änderungen. Wenn IhrView
eingegeben wurde, umList<Movies>
haben, müssen Sie erstellen eine ganze separatenView
für IhreQueue<Movies>
Modell!Wie Chris erwähnt,
List<T>
implementiertIEnumerable<T>
, so dass ist, warum es ist gültig für das View-Modell zu werden:Da Sie sagten, Sie wollen verwenden Sie es als eine
List
die Liste auch implementiertIList<T>
sollte Ihnen die Funktionalität, die Sie erwarten, um in Ihrem Blick.Können Sie Gebrauch machen von der Liste Methoden, etwa so: