我不能在视图页面中使用Model.Count

时间:2011-03-11 23:25:07

标签: asp.net-mvc

我负责维护遗留系统。该系统是从Visual Studio 2008和MVC 1.0开发的。但是,我所拥有的visual studio版本是2010.现在我遇到了一个新问题,即View中的Model对象无法使用原始类中的方法。以下是视图文件的标题。

<%@ Page Title="" Language="VB" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage(Of System.Linq.IQueryable(Of MVCApplication.opportunity))"%>

在视图部分,我有以下代码。

    <%  If (Model.Count <> 0) Then%>

但是,当我尝试使用成员'Count'时,会出现System.MissingMemberException:找不到类型为'DataQuery(Of Opportun)'的公共成员'Count'。

在调试模式下,模型包含与控制器相同的数据。但是,视图页面似乎无法访问它们。你有什么建议怎么解决吗?

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

我正在尝试将项目从VS2008 + MVC1升级到VS2010 + MVC4BETA,我也开始面临类似的问题。它在Model.xxxx上出错。我们发现的问题是代码没有将相关模型类型化为其实际对象类型,而是仅保留为Object。

我有以下视图文件标题:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.master" 
    Inherits="System.Web.Mvc.ViewPage<Employee>" %>

然后使用以下行访问Employee对象的一个​​属性

    <%=ViewData.Model.Name %>

我正在做的是让我们正常工作,我们正在为ViewData.Model中的对象显式进行类型转换,如下所示:

    <% Employee model = (Employee)ViewData.Model;%>

然后使用以下代码效果很好

    <%=model.Name %>

希望这对某人有所帮助。但是我不确定为什么要这样做。

答案 2 :(得分:-1)

看起来IQueryable interface没有Count属性。 你试过这个吗?

<% If (Model.Count() <> 0) Then %>