ASP.净:Html.Display()-方法忽略templatename
本文关键字:方法 templatename Html Display ASP | 更新日期: 2023-09-27 17:58:40
我有以下方法,根据引用TDatas
属性的PropertyInfo
为模型返回html代码。
public MvcHtmlString GetHtml(HtmlHelper<TData> helper) {
if (PropertyInfo.IsDefined(typeof(UIHintAttribute), true)) {
UIHintAttribute uiHintAttribute = PropertyInfo.GetCustomAttributes(typeof(UIHintAttribute), true).Cast<UIHintAttribute>().FirstOrDefault();
if (uiHintAttribute != null) {
// Templatename ignored here
return helper.Display(PropertyInfo.Name, uiHintAttribute.UIHint);
}
}
return helper.Display(PropertyInfo.Name);
}
显示模板的名称是通过UIHint定义的,并且可以正确读取
因此,一个电话可能是:
return helper.Display("Name", "NameDisplayTemplate");
不幸的是,当我想用特定的DisplayTemplate呈现属性时,templatename
参数会被忽略。我尝试了displaytemplate(文件夹displaytemplate)和partialview。它们都不起作用。
有人有什么想法吗?
问题是模板必须放在DisplayTemplates文件夹中,因为它是在msdn中写的。
如果找到名称与templateName参数匹配的模板在控制器的DisplayTemplates文件夹中,该模板用于渲染表达式。如果在控制器的DisplayTemplates文件夹,搜索Views''Shared''DisplayTemplates用于与templateName参数的名称匹配的模板。如果找不到模板,则使用默认模板。