我有一个带有局部视图的视图。 View和Partial View都有自己的View Model(VM)。在视图VM中,我创建了部分视图VM的属性,然后将该属性传递给部分视图的RenderAction。
@{ Html.RenderAction("PartialItem", "_PViewItem", Model.PV_Page_Item); }
在某些情况下,部分视图中将包含数据,而其他部分则为空。父视图中还有其他几个HTML,我只想在部分视图中包含数据时显示。
我需要知道的是如何判断部分视图是返回数据还是Null?
答案 0 :(得分:0)
您可以在RenderAction周围放置一个IF。正如其他人提到的那样,如果已经加载部分以停止显示它,那就太晚了。
类似的东西(如果发生在服务器端)
if (Model.PV_Page_Item != null)
{
@{ Html.RenderAction("PartialItem", "_PViewItem", Model.PV_Page_Item); }
}
答案 1 :(得分:0)
在你的行动中你可以做类似的事情。
{
var result = Repository.GetData();
if (result.Any())
{
return PartialView("_yourPartialView", result);
}
return null;
}
在您的客户端代码中添加一个空检查条件并相应地显示结果。
答案 2 :(得分:0)
我不会这样做。我宁愿返回partial view
,无论是否有数据。我不确定你的局部视图是什么样的,而是检查项目的局部视图,如果项目不包含数据,则不要在局部视图中显示HTML
。
我们假设我的视图中的用户数据来自view model
,以及我要发送到部分视图的用户地址列表。然后我会有类似下面的代码。 UserAddresses
是我要将数据传递到的部分视图的名称:
@Html.Partial("UserAddresses", Model.Addresses)
因此,在局部视图中,我将执行以下操作:
@if (Model.Count > 0)
{
foreach (var address in Model)
{
<div>@address.Line1</div>
<div>@address.Line2</div>
<br />
}
}
因此,没有必要检查零部分视图,如果没有数据通过则不显示任何HTML。