我已经做了一个带有额外参数的标签扩展,但是当我使用ViewData.ModelMetadata.DisplayName时,我不能从我的模型上的Diaplsy属性中获得显示名称?
我的模型的用户名如下所示
[Display(Name = "User name")]
public string UserName { get; set; },并按如下方式使用
@Html.LabelFor(m => m.SetupModel.UserName, @<span>No fancy characters mmkay?</span>)使用此html帮助程序
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花哨的字符,嗯?当我认为它应该显示在显示属性中设置的名称时?
发布于 2012-07-01 20:44:24
只是为了以防万一,在MVC4中它非常简单
@ViewData.ModelMetadata.PropertyName
@ViewData.ModelMetadata.DisplayNamehttps://stackoverflow.com/questions/7371390
复制相似问题