你的助手需要看起来像
public static MvcHtmlString AbbrLabelFor<TModel, TValue>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TValue>> expression, string abbreviation, object htmlAttributes)
{
ModelMetadata metaData = ModelMetadata.FromLambdaExpression(expression, helper.ViewData);
string name = ExpressionHelper.GetExpressionText(expression)
TagBuilder abbr = new TagBuilder("abbr");
abbr.MergeAttribute("title", metaData.GetDisplayName());
abbr.InnerHtml = abbreviation;
TagBuilder label = new TagBuilder("label");
label.MergeAttribute("for", name);
label.MergeAttributes(HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes));
label.InnerHtml = abbr.ToString();
return MvcHtmlString.Create(label.ToString());
}
编辑(重载)
public static MvcHtmlString AbbrLabelFor<TModel, TValue>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TValue>> expression, string abbreviation)
{
ModelMetadata metaData = ModelMetadata.FromLambdaExpression(expression, helper.ViewData);
string name = ExpressionHelper.GetExpressionText(expression);
return AbbrLabelHelper(helper, metaData, name, abbreviation, null);
}
public static MvcHtmlString AbbrLabelFor<TModel, TValue>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TValue>> expression, string abbreviation, object htmlAttributes)
{
ModelMetadata metaData = ModelMetadata.FromLambdaExpression(expression, helper.ViewData);
string name = ExpressionHelper.GetExpressionText(expression);
return AbbrLabelHelper(helper, metaData, name, abbreviation, htmlAttributes);
}
private static MvcHtmlString AbbrLabelHelper(HtmlHelper helper, ModelMetadata metaData, string name, string abbreviation, object htmlAttributes)
{
TagBuilder abbr = new TagBuilder("abbr");
abbr.MergeAttribute("title", metaData.GetDisplayName());
abbr.InnerHtml = abbreviation;
TagBuilder label = new TagBuilder("label");
label.MergeAttribute("for", name);
label.MergeAttributes(HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes));
label.InnerHtml = abbr.ToString();
return MvcHtmlString.Create(label.ToString());
}