我在MVC中说得对吗?如果我有一个模型实体,比如说Customer,并且我使用
@Html.DisplayFor(x=>x.Customer)
它将寻找一个"命名"客户的显示模板来显示实体?
而且,如果你传递给模板的对象是IEnumerable或某种集合,MVC会自动执行迭代吗?例如
@Html.DisplayFor(x => x.AllCustomers)
因此,如果我想为Customer创建一个额外的视图并强制助手使用它,比如
@Html.DisplayFor(x => x.AllCustomers, "MyCustomTemplate")
那么该模板必须是IEnumerable类型的强类型视图,对吗?我必须自己创建迭代代码吗?
如果MVC识别出模型实体与视图的模型类型匹配,那么它似乎就完成了迭代。
它将寻找一个"命名"客户的显示模板来显示实体?
是的。如果找不到object
,它将使用默认的显示模板。
而且,如果你传递给模板的对象是IEnumerable或某种集合,MVC会自动执行迭代吗?
该框架使用IEnumerable<T>
的内置模板来执行迭代,因此从技术上讲是的。
那么该模板必须是IEnumerable类型的强类型视图,对吗?
正确。
我必须自己创建迭代代码吗?
你是对的。指定自定义显示模板名称后,框架将使用您的模板而不是默认模板,因此它必须是IEnumerable<T>
的类型。