Фон
При попытке отрисовки частичного представления в ASP.NET MVC я получаю следующую ошибку. Я новичок в ASP.NET MVC и уверен, что эту ошибку легко устранить, и она проистекает из моего отсутствия полного понимания.
Вопрос ( для тех, кто не хочет читать все ):
Что вызывает эту ошибку?
Сведения об исключении:
System.InvalidOperationException
:
Элемент модели передан в
словарь имеет тип
'MyApp.Models.ClassroomFormViewModel'
но этот словарь требует модели
тип предмета
'System.Collections.Generic.IEnumerable
1 [MyApp.Models.ClassroomFormViewModel] ''.
Entites
У меня есть две сущности с родителями / детьми.
Classroom StickyNote
------------ -----------
Id 1 ----- Id
Name \ Name
(...) \ Content
---- * ClassroomID
Модель
В Model
Содержимое StickyNote хранится в другой таблице и доступно (используя Linq-to-SQL
следующим способом:
public IQueryable<StickyNote> GetStickyNotesByClassroom(Classroom classroom)
{
return from stickynote in db.StickyNotes
where stickynote.ClassroomID == classroom.ID
select stickynote;
}
Error
Я создал частичное представление для отображения StickyNote
контента, так как он «принадлежит» классу, в котором он находится. Проблема, с которой я сталкиваюсь, заключается в том, что я не могу отобразить ее и получить следующую ошибку:
Элемент модели передан в
словарь имеет тип:
'MyApp.Models.ClassroomFormViewModel'
но этот словарь требует модели
тип предмета
'System.Collections.Generic.IEnumerable
1 [MyApp.Models.ClassroomFormViewModel] ''.
Описание: необработанное исключение
произошло во время исполнения
текущий веб-запрос. Пожалуйста, просмотрите
трассировка стека для получения дополнительной информации о
ошибка и откуда она возникла
код.
Сведения об исключении:
System.InvalidOperationException
:
Элемент модели передан в
словарь имеет тип
'MyApp.Models.ClassroomFormViewModel'
но этот словарь требует модели
тип предмета
'System.Collections.Generic.IEnumerable
1 [MyApp.Models.ClassroomFormViewModel] `.
Частичное представление
Вот частичный код вида:
<%@ 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>
Родительский вид
И код из другого View, который его вызывает:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits=
"System.Web.Mvc.ViewPage<MyApp.Models.ClassroomFormViewModel>" %>
{...}
<%
Html.RenderPartial("StickyNotes", Model);
%>