对于MVC5,我可以为同一数据类型使用多个显示模板,但是有一个是默认使用的

时间:2017-02-15 22:06:03

标签: c# asp.net-mvc

在MVC5中,我有多个'共享' 显示模板用于相同的数据类型,例如与{strong>多个控制器一起使用的DateTime但是我希望其中一个模板是使用的模板,除非我明确说明了模板名称。

有没有办法可以做到以下几点:

  1. 要求仅在使用' UIHint'指定时才使用显示模板。 DisplayFor(x => x.Time, "templatename")
  2. 中指定的属性或模板名称

    OR

    1. 表示除非提供模板名称,否则将使用某个显示模板。
    2. 我知道将模板放在控制器的共享显示模板文件夹和搜索顺序中,但我指的是共享显示模板文件夹中相同数据类型的多个模板。

1 个答案:

答案 0 :(得分:1)

如果您未指定位置(使用[UIHint]的第二个参数的DisplayFor()),则按以下顺序搜索模板

/Views/YourControllerName/DisplayTemplates

如果没有找到,那么

/Views/Shared/DisplayTemplates

如果找不到任何内容,则使用属性类型的默认(内置)模板。

DateTime.cshtml中找到/Views/Shared/DisplayTemplates模板,除非您使用[UIHint]覆盖,或在@Html.DisplayFor()中指定位置,或者包含特定模板,否则将使用该模板对于控制器。