Asp.net mvc 3 如何将一种类型的局部视图放入另一种类型的常规视图?

Asp.net mvc 3 如何将一种类型的局部视图放入另一种类型的常规视图?,asp.net-mvc-3,Asp.net Mvc 3,我试图将一个局部视图放在一个不属于同一类型的常规视图中。我从分配模型创建局部视图,并将其放入/Views/Shared文件夹中。然后,我尝试在基于另一个模型(InstructorIndexData)的常规视图中调用部分视图,并收到错误消息: 传递到字典中的模型项的类型为“SchoolIn.ViewModels.InstructorIndexData”,但此字典需要类型为“SchoolIn.Models.Assignment”的模型项 下面是部分视图中的一些代码: @model ...Models

我试图将一个局部视图放在一个不属于同一类型的常规视图中。我从分配模型创建局部视图,并将其放入/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…Models.Assignment
等级
@DisplayFor(model=>model.Grade)
下面是常规视图中的一些代码:

@model SchoolIn.ViewModels.InstructorIndexData


<td> @Html.Partial("_UpdateAttendance")</td>
@model SchoolIn.ViewModels.instructor索引数据
@Html.Partial(“\u UpdateAttendance”)
如何将一种类型的局部视图放入另一种类型的常规视图?
谢谢您的帮助。

如果您使用
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; }
public IEnumerable Grades{get;set;}
然后你可以使用:

@model SchoolIn.ViewModels.InstructorIndexData
<table>
    <tr>
        @Html.DisplayFor(x => x.Grades)
    </tr>
</table>
@model SchoolIn.ViewModels.instructor索引数据
@DisplayFor(x=>x.Grades)

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

我的局部视图位于Shard文件夹中,如下所示:~/Views/Shared/\u UpdateAttendance.cshtml。在常规视图中,我试图执行@Html.Partial(“\u UpdateAttendance”)。对不起,我没有早一点添加。