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

时间:2016-05-10 14:53:05

标签: c# asp.net-mvc asp.net-mvc-4 partial-views

我有一个带有局部视图的视图。 View和Partial View都有自己的View Model(VM)。在视图VM中,我创建了部分视图VM的属性,然后将该属性传递给部分视图的RenderAction。

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

在某些情况下,部分视图中将包含数据,而其他部分则为空。父视图中还有其他几个HTML,我只想在部分视图中包含数据时显示。

我需要知道的是如何判断部分视图是返回数据还是Null?

3 个答案:

答案 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。