0

ビューでコレクションの内容を表示しようとしていますが、DisplayTemplateその特殊なプロパティ/オブジェクトのビューの定義を処理するために a を使用しています。

例えば。

<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そこで、このコントローラーの View フォルダーに、というフォルダーを作成しました。Foo.cshtml次に、次の内容で呼び出されるファイルに追加しました

@model MyNamespace.....Foo

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

そして、私は自分のビューに何を表示していますか?

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

. このコレクションに少なくとも 1 つのアイテムがあることを確認しました。アイデアはありますか?

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 インスタンスの列挙可能なコレクションを 1 行のビュー マークアップでレンダリングできるようになりました。たとえば、次のようになります。

<%: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's @: and syntax

于 2011-03-14T05:08:27.230 に答える