首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否从模型元数据中解析元数据displayname?

是否从模型元数据中解析元数据displayname?
EN

Stack Overflow用户
提问于 2011-09-10 19:28:02
回答 1查看 4.8K关注 0票数 4

我已经做了一个带有额外参数的标签扩展,但是当我使用ViewData.ModelMetadata.DisplayName时,我不能从我的模型上的Diaplsy属性中获得显示名称?

我的模型的用户名如下所示

代码语言:javascript
复制
    [Display(Name = "User name")]
    public string UserName { get; set; }

,并按如下方式使用

代码语言:javascript
复制
@Html.LabelFor(m => m.SetupModel.UserName, @<span>No fancy characters mmkay?</span>)

使用此html帮助程序

代码语言:javascript
复制
    public static MvcHtmlString LabelFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> ex, Func<object, HelperResult> template, string labelText = null) {
        var htmlFieldName = ExpressionHelper.GetExpressionText(ex);
        var metadata = htmlHelper.ViewData.ModelMetadata;
        string resolvedLabelText = labelText ?? metadata.DisplayName ?? metadata.PropertyName ?? htmlFieldName.Split('.').Last();
        if (String.IsNullOrEmpty(resolvedLabelText)) {
            return MvcHtmlString.Empty;
        }

        var tag = new TagBuilder("label");
        tag.Attributes.Add("for", TagBuilder.CreateSanitizedId(htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(htmlFieldName)));
        tag.InnerHtml = string.Format(
            "{0} {1}",
            resolvedLabelText,
            template(null).ToHtmlString()
        );
        return MvcHtmlString.Create(tag.ToString());
    }

但结果是UserNameNo花哨的字符,嗯?当我认为它应该显示在显示属性中设置的名称时?

EN

回答 1

Stack Overflow用户

发布于 2012-07-01 20:44:24

只是为了以防万一,在MVC4中它非常简单

代码语言:javascript
复制
@ViewData.ModelMetadata.PropertyName
@ViewData.ModelMetadata.DisplayName
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7371390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档