0

我试图将部分视图放在不属于同一类型的常规视图中。我从我的分配模型创建部分视图并将其放在 /Views/Shared 文件夹中。然后我尝试在基于另一个模型(InstructorIndexData)的常规视图中调用局部视图并收到错误消息:

传入字典的模型项的类型为“SchoolIn.ViewModels.InstructorIndexData”,但此字典需要“SchoolIn.Models.Assignment”类型的模型项。

这是部分视图中的一些代码:

@model ...Models.Assignment
<div class="display-label">Grade</div>
<div class="display-field">
    @Html.DisplayFor(model => model.Grade)
</div>

这是常规视图中的一些代码:

@model SchoolIn.ViewModels.InstructorIndexData


<td> @Html.Partial("_UpdateAttendance")</td>

如何将一种类型的部分视图放入另一种类型的常规视图中?谢谢你的帮助。

4

1 回答 1

1

如果您使用该Html.Partial方法渲染视图,您可以将模型作为第二个参数传递:

@Html.Partial("_PartialName", item.Grade)

如果您使用的是显示/编辑器模板,则会自动完成:

@Html.DisplayFor(x => x.Grade)

现在假设 Grade 属性的类型为Assignment,那么~/Views/Shared/DislpayTemplates/Assignment.cshtml将呈现 。

另一方面,如果您有一个集合属性:

public IEnumerable<Assignment> Grades { get; set; }

那么你可以使用:

@model SchoolIn.ViewModels.InstructorIndexData
<table>
    <tr>
        @Html.DisplayFor(x => x.Grades)
    </tr>
</table>

现在Assignment.cshtml将自动为 Grades 集合的每个元素呈现显示模板,这样您就不必在视图中编写任何丑陋的循环。

于 2012-07-06T07:26:04.963 回答