确定ViewData的结果计数

时间:2008-11-25 15:22:03

标签: asp.net-mvc model-view-controller viewdata

您好我有几个用户控件的视图,我将ViewData传递给所有用户控件,我想知道如何通过指定字符串键来确定元​​素数量。 我知道你不能将比较用于整数,因为ViewData是一个对象,但是我用这种方式设置它来解释我的问题。我也试过null但是ViewData对象永远不会为null,即使对于ViewData中没有填充数据的结果也是如此。即

在我的视图中

    <%if(ViewData["Test"].Values > 0)
      {
    %>
      <%=Html.RenderPartial("~/Views/UC/Test.ascx", ViewData["Test"])%>
   <%
      }
    %>

2 个答案:

答案 0 :(得分:4)

如果我正确理解了您的问题,您希望从ViewData中存储的元素中获取计数。 实现此目的的唯一方法是将其转换为IEnumerable或IList,然后调用Count方法。

答案 1 :(得分:0)

要回答我自己的问题,这就是我采取的做法。在我的控制器操作方法中,我根据在那里检索的记录数确定计数,如果不符合我的要求,将我的ViewData设置为null。

public ActionResult Test(){
   var test = //your query;
   if(test.Count() > 0 )
   {
       ViewData["Test"] = test;
   }
}

现在,如果没有检索到任何内容,它会自动将ViewData [“Test”]设置为null,并且在您的视图页面中,您可以执行以下操作。

<% if(ViewData["Test"] == null){
      Html.RenderPartial("~/Views/UC/NoRecords.ascx");
   }
   else
   {
      Html.RenderPartial("~/Views/UC/Awesome.ascx");
   }
%>

如果您想添加多项检查,则必须将它们添加到控制器中,然后使用您的视图页面进行比较。可能有其他方法可以做到这一点,但我发现这很有效。