DisplayFor()编译错误

时间:2013-06-24 12:04:45

标签: c# asp.net-mvc-4 razor .net-4.5

我正在尝试使用DisplayForModel和EditorForModel辅助函数来渲染我的视图。 作为第一步,我有列表控制器编写Ienumarable组织列表。

我从this SO question跟踪了Darian的答案,并按照以下方式进行了操作。

In - list.cshtml

@using PartyBiz.Models.Objects
@model IEnumerable<Organization>

@Html.DisplayFor( model => model.Organizations )

In - Organization.cshtml

@model PartyBiz.Models.Objects.Organization

<div>@Model.Caption </div>

<div>@Model.Description  </div>

<div>@Model.NameInUse  </div>

我的模型具有以下属性

public IEnumerable<Organization> Organizations { get; set; }

控制器列表操作

public ViewResult List(OrganizationQuery qry = null)
{
    return View(OrganizationRepo.All() as IEnumerable<Organization>);
}

但是我收到了编译错误:

  

编译器错误消息:CS1061:   'System.Collections.Generic.IEnumerable'   不包含“组织”的定义,也没有扩展名   方法'组织'接受类型的第一个参数   'System.Collections.Generic.IEnumerable'   可以找到(你错过了使用指令或程序集   引用?)

请告诉我这里做错了什么?

2 个答案:

答案 0 :(得分:0)

问题出在List.cshtml。您需要将其更改为以下内容:

@using PartyBiz.Models.Objects @model IEnumerable

@foreach(var m in Model)
{
    @Html.DisplayFor( m => m.Organizations )
}

答案 1 :(得分:0)

由于你的模型已经是IEnumerable,你真正需要的是

@Html.DisplayForModel()

@Html.DisplayForModel("Organization") //explicitly provide template name

您引用的问题假设存在另一个可以枚举属性Customers的模型类。你的情况有点不同。