Bryan S...
69
您可以通过创建自己的HTML帮助程序来完成此操作.
您可以通过下载ASP.Net MVC的源代码来查看LabelFor <>的代码,并将其修改为自定义帮助程序.
public static class LabelExtensions
{
public static MvcHtmlString LabelFor(this HtmlHelper html, Expression> expression, object htmlAttributes)
{
return LabelFor(html, expression, new RouteValueDictionary(htmlAttributes));
}
public static MvcHtmlString LabelFor(this HtmlHelper html, Expression> expression, IDictionary htmlAttributes)
{
ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression, html.ViewData);
string htmlFieldName = ExpressionHelper.GetExpressionText(expression);
string labelText = metadata.DisplayName ?? metadata.PropertyName ?? htmlFieldName.Split('.').Last();
if (String.IsNullOrEmpty(labelText))
{
return MvcHtmlString.Empty;
}
TagBuilder tag = new TagBuilder("label");
tag.MergeAttributes(htmlAttributes);
tag.Attributes.Add("for", html.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId(htmlFieldName));
TagBuilder span = new TagBuilder("span");
span.SetInnerText(labelText);
// assign to inner html
tag.InnerHtml = span.ToString(TagRenderMode.Normal);
return MvcHtmlString.Create(tag.ToString(TagRenderMode.Normal));
}
}
使用它时如何解决Ambigious调用错误.现在有两个LabelFor方法,一个来自默认的MVC和这个. (5认同)
知道了,在我的问题中添加了最终代码,供任何人复制/粘贴/使用.谢谢你的提醒. (2认同)