Erweitern Sie MVC3 razor Html.LabelFor, um die CSS-Klasse hinzuzufügen

Ich versuche, Html.LabelFor auf einem EditorTemplate eine CSS-Klasse hinzuzufügen

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

meine erwartung zum beispiel: label sollte die css klasse aufnehmen.

Aus diesem Grund habe ich versucht, Label mit dem folgenden Code zu erweitern, aber mein Label wird nicht angezeigt. Was mache ich hier falsch?

 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, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, 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));
        }
    }

Wenn ich zum Beispiel keine CSS-Klasse spezifiziere@Html.LabelFor(model => model.Name) , dann zeigt es das Etikett. Ich kann CSS jedoch nicht auf mein Label anwenden. Ich möchte die Beschriftung in blauer Farbe anzeigen, wenn die Seite geladen wird. Dann den Beschriftungsstil basierend auf der Benutzeraktion mit jquey ändern. Alles in Ordnung, auf meiner Seite, außer der Tatsache, dass ich keine CSS-Klasse erweitern und hinzufügen kann zu meinem Etikett.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage