我正在尝试使用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' 可以找到(你错过了使用指令或程序集 引用?)
请告诉我这里做错了什么?
答案 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
的模型类。你的情况有点不同。