检查剃须刀视图上的集合是否为空

时间:2014-02-03 11:32:05

标签: .net asp.net-mvc

在asp.net mvc app中,我的控制器使用viewdata将数据列表发送到视图。

在视图中,我通过该集合迭代并渲染一些数据

<ul class="nomargin">
  @foreach (var link in (List<MyDomain.UI.Controllers.SideLinks>)ViewData["Links1"])
  { 
    <li style="font-size: 13px; line-height: 15px;">
          <a href=@link.Link>@link.LinkName</a>
     </li>                               
  }
</ul>

问题是:如何在视图中检查此集合ViewData [“Links1”]是否为空?

3 个答案:

答案 0 :(得分:2)

您可以使用null-coalescing运算符来确保您始终拥有一个列表(如果您的ViewData有可能null

<%
  var list = ViewData["Links1"] ?? new List<MyDomain.UI.Controllers.SideLinks>();
%>

然后,如果您使用LINQ,则可以随时安全地检查list.Count > 0list.Any()

仅供参考,您可以在视图中添加@using MyDomain.UI.Controllers语句,这样您就不需要在课程中使用完全限定的命名空间。

答案 1 :(得分:1)

您可以使用列表的Count属性。

@if ((List<MyDomain.UI.Controllers.SideLinks>)ViewData["Links1"]).Count == 0)
{
    <b>This is an empty list!</b>
}

答案 2 :(得分:1)

我不会使用Count属性而是使用any。而且,您应该使用强类型对象,而不是使用ViewBag,TempData或ViewData。

如果您仍然想这样做,以下就足够了:

@{ 
  var items = (List<MyDomain.UI.Controllers.SideLinks>)ViewData["Links1"];
 }

@if(items != null && items.any()){


   //rest of the stuff.
}