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

asp.net-mvc-3 – 扩展MVC3剃刀Html.LabelFor添加css类

发布时间:2020-12-15 23:36:09 所属栏目:asp.Net 来源:网络整理
导读:我试图在EditorTemplate上添加一个css类到 Html.LabelFor @Html.LabelFor(model = model.Name,new { @class = "myLabel" }) 我的期望例如:标签应该拿起css类. 为此,我尝试使用以下代码扩展Label,但是我的标签没有显示. 我在这里做错了什么? public static
我试图在EditorTemplate上添加一个css类到 Html.LabelFor
@Html.LabelFor(model => model.Name,new { @class = "myLabel" })

我的期望例如:标签应该拿起css类.

为此,我尝试使用以下代码扩展Label,但是我的标签没有显示.
我在这里做错了什么?

public static class LabelExtensions
    {
        public static MvcHtmlString LabelFor<TModel,TValue>(this HtmlHelper<TModel> html,Expression<Func<TModel,TValue>> expression,object htmlAttributes)
        {
            return html.LabelFor(expression,null,htmlAttributes);
        }

        public static MvcHtmlString LabelFor<TModel,string labelText,object htmlAttributes)
        {
            return html.LabelHelper(
                ModelMetadata.FromLambdaExpression(expression,html.ViewData),ExpressionHelper.GetExpressionText(expression),HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes),labelText);
        }

        private static MvcHtmlString LabelHelper(this HtmlHelper html,ModelMetadata metadata,string htmlFieldName,IDictionary<string,object> htmlAttributes,string labelText = null)
        {
            var str = labelText
                ?? (metadata.DisplayName
                ?? (metadata.PropertyName
                ?? htmlFieldName.Split(new[] { '.' }).Last()));

            if (string.IsNullOrEmpty(str))
                return MvcHtmlString.Empty;

            var tagBuilder = new TagBuilder("label");
            tagBuilder.MergeAttributes(htmlAttributes);
            tagBuilder.Attributes.Add("for",TagBuilder.CreateSanitizedId(html.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(htmlFieldName)));
            tagBuilder.SetInnerText(str);

            return tagBuilder.ToMvcHtmlString(TagRenderMode.Normal);
        }

        private static MvcHtmlString ToMvcHtmlString(this TagBuilder tagBuilder,TagRenderMode renderMode)
        {
            return new MvcHtmlString(tagBuilder.ToString(renderMode));
        }
    }

如果我没有指定css类,例如@ Html.LabelFor(model => model.Name),那么它显示标签.
但我不能将CSS应用于我的标签.
我想要显示蓝色的标签,当页面加载时,然后根据用户操作改变标签样式使用jquey.All是罚款,在我的页面,除了我无法扩展和添加一个css类到我的标签

解决方法

我怀疑你忘了把您在其中定义的LabelExtensions类的命名空间放在视图中.所以例如如果这个类是在MyProject.Extensions命名空间内定义的:
namespace MyProject.Extensions
{
    public static class LabelExtensions
    {
        ...
    }
}

确保您已将此命名空间带入范围:

@using MyProject.Extensions
@model MyViewModel
...
@Html.LabelFor(model => model.Name,new { @class = "myLabel" })

(编辑:李大同)

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

    推荐文章
      热点阅读