2011-03-11 76 views
0

我负责维护遗留系统。该系统是从Visual Studio 2008和MVC 1.0开发的。然而,我有的视觉工作室版本是2010年。现在我面临一个新问题,即View中的Model对象无法使用原始类中的方法。以下是视图文件的标题。我不能在查看页面的Model.Count

<%@ 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%> 

然而,当我尝试使用成员“计数”,有System.MissingMemberException:公共部件类型'伯爵'DataQuery(机会)找不到。

在调试模式下,模型包含与控制器相同的数据。但是,看起来页面无法访问它们。你有什么建议如何解决它?

回答

-1

它看起来像该IQueryable interface没有Count财产。 你试过这个吗?

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

我试过了,它不起作用,似乎Model无法识别IQueryable接口的所有属性,你有什么建议吗? – Boong 2011-03-12 05:39:34

+0

没有这样的事情,在Razor试图做这样的事情时,@if(Model.Count() 0) {....} – 2011-08-26 21:59:18

+0

如果有什么不工作,我敢肯定这个问题不在Count()方法中,我在当前的项目中使用它,一切正常。确定模型的类型是IEnumerable。 – goenning 2011-08-29 11:21:31

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 %> 

希望这有助于某人。但我不知道为什么这是必需的。