1

DisplayFor使用する表示テンプレートを使用および指定すると、予期しないエラーが発生します。

基本モデルを実装するモデルがあります

public class Smokey : Bacon
{

}

このための表示テンプレートがあります。Smokey のモデルを持つ Smokey.cshtml

に渡すモデルDisplayForは ですIEnumerable<Bacon>。使用する表示テンプレートを指定しない場合、これは正常に機能します。

@Html.DisplayFor(x => x.Items);

しかし、表示テンプレートを指定すると、渡された項目が Bacon 型の IEnumerable であるという例外が発生しますが、このディクショナリには 'Smokey' 型のモデル項目が必要です。

@Html.DisplayFor(x => x.Items, "Smokey");

なぜこれが一方の方法で機能し、他方の方法では機能しないのかを理解しようとしていますか? 違いはなんですか?

4

2 に答える 2

2

解決済み

この問題は、テンプレート化されたヘルパーの制限であることが判明しました。テンプレート名を指定すると、コレクション内の各アイテムには適用されなくなります。

この問題の解決策は、stackoverflow に関するDarin Dimitrov の回答で見つかりました。

これが回避策です

@for (int i = 0; i < Model.Items.Count(); i++)
{
    @Html.DisplayFor(x => x.Items.ToList()[i], "Smokey")
}
于 2013-05-13T16:56:53.200 に答える