我有一个模型,可以代表3类。我想,在我看来,为每个类别制作3个不同的表格,并包含相关的字段。为此,我需要对每个类别使用部分视图和视图模型。
因此,我的主要模式是“广告”,其中有3个子视图模型(不动产,汽车和服务)。这里的示例是如何在我的主控制器上实现不动产操作的:
public ActionResult Realty()
{
var ads = db.Ads.Include(a => a.Realty);
var vm = new List<RealtyViewModel>();
foreach (var ad in ads)
{
vm.Add(new RealtyViewModel
{
Title = ad.Title,
Descirpiton = ad.Descirpiton,
Type = ad.Realty.Type,
NumberOfRooms = ad.Realty.NumberOfRooms
});
}
return PartialView(vm);
}那么我的部分观点是这样的:
@model IEnumerable<OGAS.Areas.Category.ViewModels.RealtyViewModel>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.Title)
</th>
<th>
@Html.DisplayNameFor(model => model.Type)
</th>
<th>
@Html.DisplayNameFor(model => model.Descirpiton)
</th>
<th>
@Html.DisplayNameFor(model => model.NumberOfRooms)
</th>
<th></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Title)
</td>
<td>
@Html.DisplayFor(modelItem => item.Type)
</td>
<td>
@Html.DisplayFor(modelItem => item.Descirpiton)
</td>
<td>
@Html.DisplayFor(modelItem => item.NumberOfRooms)
</td>
</tr>
}
</table>然后,在“索引”页面(不使用任何模型)中,我调用以下部分视图:
@{Html.RenderPartial("Realty");}但接下来我会发现以下错误:
“System.NullReferenceException”类型的异常发生在App_Web_gdyh352c.dll中,但未在用户代码中处理
请您告知这种方法是否好(调用3 vms),如果是,如何实现这一点?
谢谢。
发布于 2016-10-23 13:56:59
尝试替换@{Html.RenderPartial("Realty");}并在本例中使用@Html.Action("Realty"),因为您需要调用控制器操作,以便为部分视图创建模型。
有关详细信息,请参阅MVC Html.Partial or Html.Action。
发布于 2019-01-29 07:15:10
使用这个,用于.net核心和mvc。@Html.Action已从.net核心中删除
@await Html.PartialAsync("_YourPartialViewName", YourModel)https://stackoverflow.com/questions/40203135
复制相似问题