在ASP.Net MVC中检查部分视图是否返回Null或Empty



我有一个带有部分视图的视图。视图和部分视图都有自己的视图模型(VM)。在视图虚拟机中,我创建分部视图虚拟机的一个属性,然后将该属性传递到分部视图的RenderAction中。

@{ Html.RenderAction("PartialItem", "_PViewItem", Model.PV_Page_Item); }

在某些情况下,部分视图中将包含数据,而在其他情况下,它将为null。父视图中还有其他一些HTML,我只想在部分视图中有数据的情况下显示

我需要知道的是,如何判断Partial View是返回数据还是为Null?

您可以在RenderAction周围放置一个IF。正如其他人所提到的,如果已经加载了部分内容而无法停止显示,那就太晚了

类似于(如果发生在服务器端)

if (Model.PV_Page_Item != null)
{
@{ Html.RenderAction("PartialItem", "_PViewItem", Model.PV_Page_Item); }
}

在您的操作中,您可以执行以下操作。

{
var result = Repository.GetData();
          if (result.Any())
            {
                return PartialView("_yourPartialView", result);
            }
            return null;
}

在您的客户端代码中添加一个空检查条件并相应地显示结果。

我不会这样做。我宁愿返回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 />
     }
}

因此,实际上不需要检查null部分视图,只要在没有数据通过的情况下不显示任何HTML即可。

相关内容

最新更新