加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 我能改变MVC中LabelFor渲染的方式吗?

发布时间:2020-12-16 03:57:17 所属栏目:asp.Net 来源:网络整理
导读:我想改变LabelFor渲染的方式.我可以使用DisplayTemplate吗? LabelFor生成标签标签,我想在标签的末尾添加“:”. 谢谢! 亚历克斯 解决方法 这是一个 HTML Helper,它将执行此操作: public static class LabelExtensions { [SuppressMessage("Microsoft.Desi
我想改变LabelFor渲染的方式.我可以使用DisplayTemplate吗?

LabelFor生成标签标签,我想在标签的末尾添加“:”.

谢谢!

亚历克斯

解决方法

这是一个 HTML Helper,它将执行此操作:

public static class LabelExtensions {
    [SuppressMessage("Microsoft.Design","CA1006:DoNotNestGenericTypesInMemberSignatures",Justification = "This is an appropriate nesting of generic types")]
    public static MvcHtmlString SmartLabelFor<TModel,TValue>(this HtmlHelper<TModel> html,Expression<Func<TModel,TValue>> expression) {
        return LabelHelper(html,ModelMetadata.FromLambdaExpression(expression,html.ViewData),ExpressionHelper.GetExpressionText(expression));
    }

    internal static MvcHtmlString LabelHelper(HtmlHelper html,ModelMetadata metadata,string htmlFieldName) {
        string labelText = metadata.DisplayName ?? metadata.PropertyName ?? htmlFieldName.Split('.').Last();
        if (String.IsNullOrEmpty(labelText)) {
            return MvcHtmlString.Empty;
        }

        // uncomment if want * for required field
        //if (metadata.IsRequired) labelText = labelText + " *";
        labelText = labelText + ":";

        TagBuilder tag = new TagBuilder("label");
        tag.Attributes.Add("for",html.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId(htmlFieldName));
        tag.SetInnerText(labelText);
        return MvcHtmlString.Create(tag.ToString(TagRenderMode.Normal));
    }
}

要使用它:

<%:Html.SmartLabelFor(m => m.FirstName)%>

它将呈现:

<label for="FirstName">First Name:</label>

或者,如果您取消注释所需的字段*

<label for="FirstName">First Name *:</label>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读