2013-06-24 72 views
0

我想使用DisplayForModel和EditorForModel辅助函数呈现我的视图。 作为第一步,我有列表控制器写出无法企及的组织名单。DisplayFor()编译错误

我跟着Darian从this SO question的答案,并做了如下。

在 - list.cshtml

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

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

在 - 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>); 
} 

但是我收到编译错误:

Compiler Error Message: CS1061: 'System.Collections.Generic.IEnumerable' does not contain a definition for 'Organizations' and no extension method 'Organizations' accepting a first argument of type 'System.Collections.Generic.IEnumerable' could be found (are you missing a using directive or an assembly reference?)

请指教一下我做错了吗?

回答

0

问题出在List.cshtml。你需要改变它soemthing像波纹管:

@using PartyBiz.Models.Objects @model IEnumerable的

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

感谢您的评论。我正在寻找没有任何foreach的东西,可能我没有明确提到.. – mmssaann

+0

@mmssddff如何显示没有foreach的每个元素?这是不可能的 –

0

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

@Html.DisplayForModel() 

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

你引用屁股的问题假设有另一个模型类,可以列举属性Customers。你的情况有点不同。

+0

这将显示代理实体如下:System.Data.Entity.DynamicProxies.Party_A9AAEA1B13CDAAAE6 - 有一些长文本的课程 – mmssaann

+0

@ mmssddff,那么你可以尝试'DispalyForModel' - 请参阅更新。 – Andrei

+0

DisplayForModel将只适用于单个组织,我无法显示使用DisplayForModel的组织列表... – mmssaann