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

时间:2014-04-17 08:41:47

标签: c# asp.net razor display-templates

我有以下方法根据PropertyInfo引用TDatas属性为模型返回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);
    }

displaytemplate的名称是通过UIHint定义的,并且可以正确读出 所以一个电话可能是:

return helper.Display("Name", "NameDisplayTemplate");

不幸的是,当我想使用特定的DisplayTemplate呈现属性时,忽略templatename参数。我尝试了displaytemplate(文件夹displaytemplate)和partialview。他们都没有工作。

有人有什么想法吗?

1 个答案:

答案 0 :(得分:0)

问题是模板必须放在DisplayTemplates-Folder中,因为它是在msdn中编写的。

  

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