我是否正确地说在MVC中,如果我有一个模型实体,让我们说客户,我使用
@Html.DisplayFor(x=>x.Customer)
它会查找“命名”客户显示实体的显示模板吗?
并且,如果您传递模板的对象是IEnumerable或某种类型的集合,MVC会自动执行迭代吗?例如。
@Html.DisplayFor(x => x.AllCustomers)
因此,如果我想为Customer创建一个额外的视图并强制帮助者使用它,比如说
@Html.DisplayFor(x => x.AllCustomers, "MyCustomTemplate")
那么该模板必须是IEnumerable类型的强类型视图吗?我必须自己创建迭代代码?
如果它认识到模型实体与视图的模型类型匹配,那么MVC似乎会执行迭代位。
答案 0 :(得分:1)
它会查找“命名”客户的显示模板以显示实体吗?
是。如果它找不到任何内容,它将使用object
的默认显示模板。
并且,如果您传递模板的对象是IEnumerable或某种类型的集合,MVC会自动执行迭代吗?
框架使用IEnumerable<T>
的内置模板执行迭代,技术上是。
那么该模板必须是IEnumerable类型的强类型视图吗?
正确。
我必须自己创建迭代代码吗?
你是对的。指定自定义显示模板名称后,框架将使用您的模板而不是默认模板,因此它必须是IEnumerable<T>
的类型。