Asp.net mvc MVC3 ASPX视图对象不包含定义

Asp.net mvc MVC3 ASPX视图对象不包含定义,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-2,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 2,我使用MVC2启动了这个项目,但改为MVC3 dll 我有一个资产实体。在控制器中,我有如下定义的详细操作结果: 编辑:(输入正确的控制器代码。) My Details.aspx页面的定义如下: <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<CITracker.Models.Asset>" %>

我使用MVC2启动了这个项目,但改为MVC3 dll

我有一个资产实体。在控制器中,我有如下定义的详细操作结果:
编辑:(输入正确的控制器代码。)

My Details.aspx页面的定义如下:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<CITracker.Models.Asset>" %>  
<%@ Import Namespace="CITracker.Models" %>  
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">  
Details  
</asp:Content>  

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<h2>Details</h2>

<fieldset>
    <legend>Fields</legend>

    <div class="display-label">Id</div>
    <div class="display-field"><%: Model.Id %></div>

你知道为什么这在MVC2中起作用,但在MVC3中却失败了吗?我没有得到开发时间错误,但我得到运行时错误。

我不确定,但看起来这就是问题所在。您正在将列表传递给视图

return View(db.Assets.ToList()); 
但是你的继承人说
Inherits=“System.Web.Mvc.ViewPage”
而不是

Inherits="System.Web.Mvc.ViewPage<IEnumerable<CITracker.Models.Asset>>"
Inherits=“System.Web.Mvc.ViewPage”

而且,由于您的模型现在是IEnumerable,您不能使用简单的模型.Id,而应该使用模型[0].Id(或者您选择的元素或使用foreach的元素)

这是一个老问题,但我在将一些MVC 2代码转换为MVC 3时遇到了同样的问题。要查找的一个简单配置问题是确保配置中有此应用程序设置:

<appSettings>
    <add key="enableSimpleMembership" value="false" />
</appSettings>

了解更多信息。

您似乎发送了
IEnumerable
,并希望在视图中获得
Assest
检查拼写,确保您的模型实际包含Id属性。是的,资产实体包含Id。很抱歉,粘贴了错误的代码。正如你现在看到的,我正在返回Find(id)的结果以获取详细信息。你能不能放一个断点,看看视图上的模型对象到底是什么??
Inherits="System.Web.Mvc.ViewPage<IEnumerable<CITracker.Models.Asset>>"
<appSettings>
    <add key="enableSimpleMembership" value="false" />
</appSettings>