【问题标题】:MVC3 ASPX view object does not contain definitionMVC3 ASPX 视图对象不包含定义
【发布时间】:2013-10-17 01:18:36
【问题描述】:

我使用 MVC2 开始这个项目,但更改为 MVC3 dll。

我有一个资产实体。在控制器中,我将 Details ActionResult 定义如下:
编辑:(输入正确的控制器代码。)

    public ActionResult Details(int id)
    {
        using (var db = new AssetsContainer())
        {
            return View(db.Assets.Find(id));
        }
    } 

我的 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>

我得到这个错误:

CS1061: 'object' does not contain a definition for 'Id' and no extension method 'Id' accepting a first argument of type 'object' could be found (are you missing a using directive or an assembly reference?)

任何想法为什么这适用于 MVC2 但在 MVC3 上失败?我没有遇到开发时错误,但确实遇到了运行时错误。

【问题讨论】:

  • 您发送IEnumerable&lt;Asset&gt; 并期望在视图中收到Assest
  • 检查您的拼写并确保您的模型实际上包含 Id 属性。
  • 是的,资产实体包含 ID。

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-2


【解决方案1】:

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

return View(db.Assets.ToList()); 

但是你的继承人说 Inherits="System.Web.Mvc.ViewPage&lt;CITracker.Models.Asset&gt;" 而不是

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

而且由于你的模型现在是一个 IEnumerable,你不能做一个简单的 Model.Id 而应该是 Model[0].Id(或者你选择的任何元素或者你做一个 foreach)

【讨论】:

  • 抱歉贴错了代码。如您现在所见,我正在从 Find(id) 返回结果以获取详细信息。
  • 你能不能打个断点,看看视图上的模型对象到底是什么??
【解决方案2】:

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

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

请参阅此thread 了解更多信息。

【讨论】:

    猜你喜欢
    • 2012-04-21
    • 1970-01-01
    • 2012-03-22
    • 2013-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-31
    • 2015-11-27
    相关资源
    最近更新 更多