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

C# 对于MVC5,我可以为同一数据类型使用多个显示模板,但默认使用一个吗,c#,asp.net-mvc,C#,Asp.net Mvc,在MVC5中,我有多个'shared'显示模板,用于与多个控制器一起使用的相同数据类型,例如DateTime,但我希望其中一个模板是使用的模板,除非我特别说明模板名称 我有没有办法做到以下几点: 要求仅在使用DisplayFor(x=>x.Time,“templatename”) 或 指示使用特定的显示模板,除非提供了模板名称 我知道将模板放置在控制器的共享显示模板文件夹和搜索顺序中,但我指的是共享显示模板文件夹中相同数据类型的多个模板 如果未指定位置(使用DisplayFor()的第二个参数的

在MVC5中,我有多个'shared'显示模板,用于与多个控制器一起使用的相同数据类型,例如
DateTime
,但我希望其中一个模板是使用的模板,除非我特别说明模板名称

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

  • 要求仅在使用
    DisplayFor(x=>x.Time,“templatename”)
  • 指示使用特定的显示模板,除非提供了模板名称

  • 我知道将模板放置在控制器的共享显示模板文件夹和搜索顺序中,但我指的是共享显示模板文件夹中相同数据类型的多个模板

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

    /Views/YourControllerName/DisplayTemplates
    
    如果什么也没找到,那么

    /Views/Shared/DisplayTemplates
    
    如果未找到任何内容,则使用属性类型的默认(内置)模板


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

    谢谢。我知道这一点,并将其用于其他示例,但我希望同一数据类型有多个“共享”显示模板。
    因此,将其放在控制器的文件夹中并不能实现我想要的效果。但是,使用UIHint是我今天要做的事情,但是如果我选择不使用UIHint或为数据类型指定显示模板,并且“共享”显示模板文件夹中有两个模板用于所使用的相对数据类型。最后一条评论在完成之前超时,谢谢。让我进一步澄清我的问题。我知道“搜索顺序”和“UIHint属性”。我遗漏了我希望多个控制器共享相同数据类型的模板。因此,两者都将放在“共享”显示模板文件夹中。因此,当我不使用UIHint或模板名称时,使用什么模板?使用的默认模板是什么?有没有办法指定默认模板是什么?可以通过注释它,也可以通过注释其他模板不是默认模板?与数据类型同名的文件是默认模板。您只能有一个名为DateTime.cshtml的文件,因此这将是默认文件。如果要使用替代模板,例如DateTimeAlt.cshtml,则必须使用UIHint或DisplayFor显式指定该模板。@Blake,根据答案,如果文件名与类型类型相同(即,对于
    DateTime
    -命名文件
    DateTime.cshtml
    )它位于
    /Views/Shared/EditorTemplates
    文件夹中,则该模板将用作默认模板。