ProgramingTip

.NET MVC-Html.LabelFor에 클래스를 할당하는 방법은 무엇입니까?

bestdevel 2020. 11. 6. 19:02
반응형

.NET MVC-Html.LabelFor에 클래스를 할당하는 방법은 무엇입니까?


이 코드

<%= Html.LabelFor(model => model.Name) %>

생산

<label for="Name">Name</label>

하지만 나는 그것을 원한다

<label for="Name" class="myLabel">Name</label>

어떻게 하죠?


좋아,이 방법의 소스 (System.Web.Mvc.Html.LabelExtensions.cs)를 살펴보면 ASP.NET MVC 2에서 HtmlHelper를 사용하여이 작업을 수행 할 수있는 방법이없는 것입니다. 고유 한 HtmlHelper를 만들거 나이 특정 레이블에 대해 다음을 수행하는 것입니다.

<label for="Name" class="myLabel"><%= Model.Name %></label>

안타깝게도 MVC 3 에서 Html.LabelFor () 메소드는 직접 클래스 선언을 허용하는 메소드 서명이 없습니다. 그러나 MVC 4 는 htmlAttributes 익명 객체를 허용하는 2 개의 오버로드를 추가합니다.

모든 HtmlHelper와 마침 C # 컴파일러는 class예약어로 인식하는 것이 기억하는 것이 중요합니다 .

@를 사용하면 클래스 속성 속성을 사용할 수 있습니다.

@Html.LabelFor(model => model.PhysicalPostcode, new { @class= "SmallInput" })

@ 기호는 "클래스"를 전달되는 리터럴로 만듭니다.


LabelFor의 보강 :

public static class NewLabelExtensions
{
    public static MvcHtmlString LabelFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, object htmlAttributes)
    {
        return LabelFor(html, expression, new RouteValueDictionary(htmlAttributes));
    }
    public static MvcHtmlString LabelFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, IDictionary<string, object> 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));
        tag.SetInnerText(labelText);
        return MvcHtmlString.Create(tag.ToString(TagRenderMode.Normal));
    }
}

http://weblogs.asp.net/imranbaloch/archive/2010/07/03/asp-net-mvc-labelfor-helper-with-htmlattributes.aspx

참고 URL : https://stackoverflow.com/questions/2294250/net-mvc-how-to-assign-a-class-to-html-labelfor

반응형