Arbeiten mit Teilweise Blick auf die in ASP.NET MVC
Hintergrund
Ich erhalte die folgende Fehlermeldung, wenn Sie versuchen zu machen eine Teilansicht in ASP.NET MVC. Ich bin neu ASP.NET MVC und bin sicher, der Fehler ist einfach zu beheben und nur stammt aus meiner fehlen vollständig zu verstehen.
Frage (für diejenigen, die nicht wollen, um alles zu Lesen):
Was verursacht diesen Fehler ?
Exception Details:
System.InvalidOperationException
:
Das Modell-Element übergeben, in der
Wörterbuch ist vom Typ
'MyApp.Models.ClassroomFormViewModel'
aber dieses Wörterbuch benötigt ein Modell
item vom Typ
'System.Collections.Generic.IEnumerable
1[MyApp.Modelle.ClassroomFormViewModel]".
Entites
Habe ich zwei Personen, die eine Eltern/Kind-Beziehung.
Klassenzimmer StickyNote ------------ ----------- Id 1 ----- Id Name \ Name (...) \ Inhalt ---- * ClassroomID
Modell
In der Model
dem StickyNote Inhalte werden in einer anderen Tabelle zugegriffen (mit Linq-to-SQL
durch die folgende Methode:
public IQueryable<StickyNote> GetStickyNotesByClassroom(Classroom classroom)
{
return from stickynote in db.StickyNotes
where stickynote.ClassroomID == classroom.ID
select stickynote;
}
Fehler
Habe ich eine partial view für die Anzeige von StickyNote
Inhalt, da es 'gehört' zum Klassenzimmer es auf. Das problem das ich laufen in ist, dass ich nicht in der Lage, um es anzuzeigen, und Sie erhalten die folgende Fehlermeldung:
Modell-Element übergeben, in der
Wörterbuch ist vom Typ:
'MyApp.Models.ClassroomFormViewModel'
aber dieses Wörterbuch benötigt ein Modell
item vom Typ
'System.Collections.Generic.IEnumerable
1[MyApp.Modelle.ClassroomFormViewModel]".
Beschreibung: Eine nicht behandelte Ausnahme
ist aufgetreten während der Ausführung der
aktuellen web-Anfrage. Bitte überprüfen Sie die
Stapelüberwachung für weitere Informationen über
die Fehler und wo Sie Ihren Ursprung in
die code.Exception Details:
System.InvalidOperationException
:
Das Modell-Element übergeben, in der
Wörterbuch ist vom Typ
'MyApp.Models.ClassroomFormViewModel'
aber dieses Wörterbuch benötigt ein Modell
item vom Typ
'System.Collections.Generic.IEnumerable
1[MyApp.Modelle.ClassroomFormViewModel]".
Teilansicht
Hier ist die partielle anzeigen-code:
<%@ Control Language="C#" Inherits="
System.Web.Mvc.ViewUserControl<IEnumerable<MyApp.Models.ClassroomFormViewModel>>" %>
<table background="../../images/corkboard.jpg">
<% foreach (var items in Model) { %>
<tr>
<% foreach (var item in items.StickyNotes) { %>
<td><div class="sticky_note_container">
<!-- actually use a post it note here on the page -->
<div class="sticky_note">
<div class="sticky_note_content">
<!-- content of sticky note here -->
<% Html.ActionLink(item.Name, "ShowStickyNoteContent"); %>
<!-- end of content of sticky note -->
</div>
</div>
<div class="sticky_note_footer"> </div>
<br clear="all" />
</div>
</td>
<% } %>
</tr>
<% } %>
</table>
Übergeordneten Ansicht
Ist und der code aus der anderen Ansicht, es ruft:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits=
"System.Web.Mvc.ViewPage<MyApp.Models.ClassroomFormViewModel>" %>
{...}
<%
Html.RenderPartial("StickyNotes", Model);
%>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Übergeben Sie in einer einzigen Instanz von Ihr ClassroomFormViewModel in und der Ansicht ist, erwartet einen eine Sammlung also
IEnumerable<ClassroomFormViewModel>.
Ändern Sie Ihre Erklärung in Ihrem PartialView zu
ODER
Was Sie wirklich wollen (nach der Suche wirklich in Ihrem code) IST ein
IEnumerable<ClassroomFormViewModel>
so Ihr Modell in Ihrer Berufung Seite muss
IEnumerable<ClassroomFormViewModel>
Im wesentlichen Sie versuchen zu tun, diese
Ihre teilweise beginnen sollte
Ich vermute, Sie möchten die Anzeige einem Klassenzimmer auf Ihrer Seite haben.
Wenn Sie anzeigen möchten, dann verwenden Sie nicht eine Liste mit den viewmodels.
Verwenden Sie eine viewmodel, die eine Liste von Klassenzimmern