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