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:
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
'program story' 카테고리의 다른 글
Intellij에서 Java 디버거를 사용할 때 "드롭 프레임"은 무엇을 의미합니까? (0) | 2020.09.19 |
---|---|
JUnit 테스트는 Eclipse에서 통과하지만 Maven Surefire에서는 실패합니다. (0) | 2020.09.19 |
'…'지시문에 필요한 컨트롤러 'ngModel'을 찾을 수 없습니다. (0) | 2020.09.19 |
Godaddy에서 발급 한 인증서 사용시 "공개 키 인증서와 개인 키가 일치하지 않습니다." (0) | 2020.09.19 |
X-Frame-Options Allow-From 여러 도메인 (0) | 2020.09.19 |