0

我试图在我的视图中显示集合的内容..但使用 aDisplayTemplate来处理视图的定义,用于该专用属性/对象。

例如。

<div class="display-label">Foos</div>
<div class="display-field">@Html.DisplayTextFor(_ => Model.Foos)</div>

并且 foo 对象是..

public class Foo
{
    public string Name { get; set; }
    public string Blah { get; set; }
}

和...

public string MyModel
{
    public ICollection<Foo> Foos { get; set;}
}

所以我在DisplayTemplates这个控制器的视图文件夹中创建了一个名为的文件夹。然后我添加了一个名为Foo.cshtml以下内​​容的文件

@model MyNamespace.....Foo

@Model [@Model.Blah] @Model.Name

我的视图上显示了什么?

System.Collections.Generic.List`1[MyNamespace .....Foo]

. 我已确认此收藏中至少有一件商品。有什么想法吗,伙计们?

4

2 回答 2

1

找到我的答案:)

我(错误地)

@Html.DisplayTextFor(_ => Model.Foos)

但我不应该一直使用DisplayTextFor但是DisplayFor

@Html.DisplayFor(x => x.Model.Foos)

另外,我购买了Steve SandersonPro ASP.NET MVC2 Framework (2nd Edition) .pdf 的副本,他在第 423 页上说(我真诚地希望我没有侵犯版权,在这里)。

例如,您现在可以使用单行视图标记呈现可枚举的 Person 实例集合,例如:

<%:Html.DisplayFor(x => x.MyPersonCollection) %>
//This would render the Person.ascx partial once 
//for each item in the collection. 

他是正确的,这段文字突出了我的错误。

赢 :)

于 2011-03-14T10:19:13.090 回答
0

我认为应该是:

@model MyNamespace.....Foo

[@:Model.Blah] @:Model.Name

你甚至可以使用<text>标签。

有关详细信息,请参阅 Scott Gu 的帖子: ASP.NET MVC 3:Razor 的 @: 和语法

于 2011-03-14T05:08:27.230 回答