program story

Html.Label, Html.LabelFor 및 Html.LabelForModel의 차이점은 무엇입니까?

inputbox 2020. 9. 19. 11:06
반응형

Html.Label, Html.LabelFor 및 Html.LabelForModel의 차이점은 무엇입니까?


@Html.Label(), @Html.LabelFor()@Html.LabelForModel()메서드 의 차이점은 무엇입니까 ?


Html.Label 이름이 지정된 입력 텍스트와 일치하는 입력에 대한 레이블을 제공합니다 (보다 구체적으로 문자열 표현식과 일치하는 모델 속성의 경우).

// Model
public string Test { get; set; }

// View
@Html.Label("Test")

// Output
<label for="Test">Test</label>

Html.LabelFor 제공된 표현식 (일반적으로 모델 속성)이 나타내는 속성에 대한 레이블을 제공합니다.

// Model
public class MyModel
{
    [DisplayName("A property")]
    public string Test { get; set; }
}

// View
@model MyModel
@Html.LabelFor(m => m.Test)

// Output
<label for="Test">A property</label>

Html.LabelForModel조금 까다 롭습니다. for모델 객체가 나타내는 매개 변수 값을 가진 레이블을 반환 합니다. 특히 사용자 정의 편집기 템플릿에 유용합니다. 예를 들면 :

// Model
public class MyModel
{
    [DisplayName("A property")]
    public string Test { get; set; }
}

// Main view
@Html.EditorFor(m => m.Test)

// Inside editor template
@Html.LabelForModel()

// Output
<label for="Test">A property</label>

Html.Label -생성자에 전달 된 문자열이 무엇이든간에 레이블 태그를 만듭니다.

Html.LabelFor - Creates a label for that specific property. This is strongly typed. By default, this will just do the name of the property (in the below example, it'll output MyProperty if that Display attribute wasn't there). Another benefit of this is you can set the display property in your model and that's what will be put here:

public class MyModel
{
    [Display(Name="My property title")
    public class MyProperty{get;set;}
}

In your view:

Html.LabelFor(x => x.MyProperty) //Outputs My property title

In the above, LabelFor will display <label for="MyProperty">My property title</label>. This works nicely so you can define in one place what the label for that property will be and have it show everywhere.


I think that the usage of @Html.LabelForModel() should be explained in more detail.

The LabelForModel Method returns an HTML label element and the property name of the property that is represented by the model.

You could refer to the following code:

Code in model:

using System.ComponentModel;

[DisplayName("MyModel")]
public class MyModel
{
    [DisplayName("A property")]
    public string Test { get; set; }
}

Code in view:

@Html.LabelForModel()
<div class="form-group">

    @Html.LabelFor(model => model.Test, new { @class = "control-label col-md-2" })

    <div class="col-md-10">
        @Html.EditorFor(model => model.Test)
        @Html.ValidationMessageFor(model => model.Test)
    </div>
</div>

The output screenshot:

enter image description here

Reference to answer on the asp.net forum


suppose you need a label with text customername than you can achive it using 2 ways

[1]@Html.Label("CustomerName")

[2]@Html.LabelFor(a => a.CustomerName)  //strongly typed

2nd method used a property from your model. If your view implements a model then you can use the 2nd method.

More info please visit below link

http://weblogs.asp.net/scottgu/archive/2010/01/10/asp-net-mvc-2-strongly-typed-html-helpers.aspx

참고URL : https://stackoverflow.com/questions/16346179/whats-the-difference-between-html-label-html-labelfor-and-html-labelformodel

반응형