您好我有几个用户控件的视图,我将ViewData传递给所有用户控件,我想知道如何通过指定字符串键来确定元素数量。 我知道你不能将比较用于整数,因为ViewData是一个对象,但是我用这种方式设置它来解释我的问题。我也试过null但是ViewData对象永远不会为null,即使对于ViewData中没有填充数据的结果也是如此。即
在我的视图中
<%if(ViewData["Test"].Values > 0)
{
%>
<%=Html.RenderPartial("~/Views/UC/Test.ascx", ViewData["Test"])%>
<%
}
%>
答案 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");
}
%>
如果您想添加多项检查,则必须将它们添加到控制器中,然后使用您的视图页面进行比较。可能有其他方法可以做到这一点,但我发现这很有效。