我负责维护遗留系统。该系统是从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'。
在调试模式下,模型包含与控制器相同的数据。但是,视图页面似乎无法访问它们。你有什么建议怎么解决吗?
答案 0 :(得分:0)
您是否打算升级旧系统?
您仍然可以下载MVC 1 http://www.microsoft.com/downloads/en/details.aspx?FamilyID=53289097-73ce-43bf-b6a6-35e00103cb4b&displaylang=en
答案 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 %>