在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”]是否为空?
答案 0 :(得分:2)
您可以使用null-coalescing运算符来确保您始终拥有一个列表(如果您的ViewData
有可能null
)
<%
var list = ViewData["Links1"] ?? new List<MyDomain.UI.Controllers.SideLinks>();
%>
然后,如果您使用LINQ,则可以随时安全地检查list.Count > 0
或list.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.
}