共有ビューが共通の属性を読み取れるようにするために、よく知られている基本クラスを拡張する ViewModel があります。これは仕様によるものです。
モデルに含まれるエンティティのリストに関する詳細を表示するページもあります。次のコードに例を示します。
public abstract class AbstractViewModel {
public Exception lastError; //If not null triggers a big warning
}
public class Cat{
[Display(...)]
public string Name;
}
public class CatListViewModel: AbstractViewModel {
public IEnumerable<Cat> cats;
}
今、私の部分的なビューは、一般的な MVC の方法を使用して猫のリストを表示する必要があります
@model Org.Zighinetto.CatListViewModel
<table>
<tr>
<th>
@Html.DisplayNameFor(model => model.Cats.Name) //Doesn't work!!
</th>
</tr>
@foreach (var item in Model.Cats)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
</tr>
}
</table>
残念ながらDisplayNameFor
、コレクションを引数として使用することはできません
質問は
IEnumerable<Cat>
上記のデータモデルを考えると、設計上の理由からモデルの性質を変更したくない...
Cat
クラスの属性である表示名を、DisplayNameFor
特にこのコレクションが空の場合に式にコレクションが含まれる場合、メソッドまたは同等のものにバインドするにはどうすればよいですか? そうでなければ、上記のコンパイルエラーを修正するにはどうすればよいですか? DisplayNameFor
この場合の正しい構文は何ですか?