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。它们都不起作用。

有人有什么想法吗?

ASP.净:Html.Display()-方法忽略templatename

问题是模板必须放在DisplayTemplates文件夹中,因为它是在msdn中写的。

如果找到名称与templateName参数匹配的模板在控制器的DisplayTemplates文件夹中,该模板用于渲染表达式。如果在控制器的DisplayTemplates文件夹,搜索Views''Shared''DisplayTemplates用于与templateName参数的名称匹配的模板。如果找不到模板,则使用默认模板。