1

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

在我看来

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

2 回答 2

5

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

于 2008-11-25T15:31:15.103 回答
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");
   }
%>

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

于 2008-12-23T15:00:16.990 回答