MVC DisplayFor模板选择

时间:2013-08-21 05:34:08

标签: asp.net-mvc displayfor

我是否正确地说在MVC中,如果我有一个模型实体,让我们说客户,我使用

@Html.DisplayFor(x=>x.Customer)

它会查找“命名”客户显示实体的显示模板吗?

并且,如果您传递模板的对象是IEnumerable或某种类型的集合,MVC会自动执行迭代吗?例如。

@Html.DisplayFor(x => x.AllCustomers)

因此,如果我想为Customer创建一个额外的视图并强制帮助者使用它,比如说

@Html.DisplayFor(x => x.AllCustomers, "MyCustomTemplate")

那么该模板必须是IEnumerable类型的强类型视图吗?我必须自己创建迭代代码?

如果它认识到模型实体与视图的模型类型匹配,那么MVC似乎会执行迭代位。

1 个答案:

答案 0 :(得分:1)

  

它会查找“命名”客户的显示模板以显示实体吗?

是。如果它找不到任何内容,它将使用object的默认显示模板。

  

并且,如果您传递模板的对象是IEnumerable或某种类型的集合,MVC会自动执行迭代吗?

框架使用IEnumerable<T>的内置模板执行迭代,技术上是。

  

那么该模板必须是IEnumerable类型的强类型视图吗?

正确。

  

我必须自己创建迭代代码吗?

你是对的。指定自定义显示模板名称后,框架将使用您的模板而不是默认模板,因此它必须是IEnumerable<T>的类型。