Asp.net mvc 向RenderPartial()传递不同的模型
我正在将一些局部视图链接在一起,我需要一种在调用RenderPartial()时使用不同模型的方法。关于SO的大多数答案都表示要强制转换为模型类型,但这在编译时是未知的 该网站有不同的类别,如汽车、飞机、直升机和船只。当用户点击Cars链接时,汽车控制器的索引页面会显示一个漂亮的表格中的所有汽车。飞机等也一样。 所有的表都是相同的,所以我想使用部分视图来重用代码Asp.net mvc 向RenderPartial()传递不同的模型,asp.net-mvc,razor,Asp.net Mvc,Razor,我正在将一些局部视图链接在一起,我需要一种在调用RenderPartial()时使用不同模型的方法。关于SO的大多数答案都表示要强制转换为模型类型,但这在编译时是未知的 该网站有不同的类别,如汽车、飞机、直升机和船只。当用户点击Cars链接时,汽车控制器的索引页面会显示一个漂亮的表格中的所有汽车。飞机等也一样。 所有的表都是相同的,所以我想使用部分视图来重用代码 @model IEnumerable<MyNamespace.Entities.Car> @{Html.RenderPar
@model IEnumerable<MyNamespace.Entities.Car>
@{Html.RenderPartial("Partials/_TableList", Model);}
其中ViewBag中的PartialToLoad在控制器中设置。此处有3个选项:
@model IEnumerable
@model IEnumerable
@model IEnumerable
不管您是传递模型类模型,还是将其放在ViewBag中,您都需要上述方法之一来访问常用方法。为什么不为您的模型使用多态性?
<table class="table prettyTable">
@{Html.RenderPartial((string)ViewBag.PartialToLoad, Model);}
</table>
@model IEnumerable<MyNamespace.Entities.Car>
<thead>...</thead>
<tbody>
@foreach (var item in Model)
{ ... }
</tbody>
@model IEnumerable<dynamic>
<table class="table prettyTable">
@{Html.RenderPartial((string)ViewBag.PartialToLoad, Model);}
</table>
@{RenderPartialExtensions.RenderPartial(Html, (string)ViewBag.PartialToLoad, Model);}