@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
-특정 속성에 대한 레이블을 만듭니다. 이것은 강력한 형식입니다. 기본적으로 이것은 속성의 이름 만 수행합니다 (아래 예에서는 해당 Display 속성이없는 경우 MyProperty를 출력합니다). 이것의 또 다른 이점은 모델에서 디스플레이 속성을 설정할 수 있다는 것입니다.
public class MyModel
{
[Display(Name="My property title")
public class MyProperty{get;set;}
}
귀하의 관점에서 :
Html.LabelFor(x => x.MyProperty) //Outputs My property title
위의 LabelFor는 표시됩니다 <label for="MyProperty">My property title</label>
. 이것은 훌륭하게 작동하므로 해당 속성의 레이블이 무엇인지 한곳에서 정의하고 모든 곳에 표시 할 수 있습니다.
답변
의 사용법에 @Html.LabelForModel()
대해 좀 더 자세히 설명해야 한다고 생각합니다 .
LabelForModel 메서드는 HTML 레이블 요소와 모델이 나타내는 속성의 속성 이름을 반환합니다.
다음 코드를 참조 할 수 있습니다.
모델의 코드 :
using System.ComponentModel;
[DisplayName("MyModel")]
public class MyModel
{
[DisplayName("A property")]
public string Test { get; set; }
}
보기 코드 :
@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>
출력 스크린 샷 :
답변
두 가지 방법을 사용하여 얻을 수있는 것보다 텍스트 customername이있는 레이블이 필요하다고 가정하십시오.
[1]@Html.Label("CustomerName")
[2]@Html.LabelFor(a => a.CustomerName) //strongly typed
두 번째 방법은 모델의 속성을 사용했습니다. 뷰가 모델을 구현하는 경우 두 번째 방법을 사용할 수 있습니다.
자세한 정보는 아래 링크를 방문하십시오
http://weblogs.asp.net/scottgu/archive/2010/01/10/asp-net-mvc-2-strongly-typed-html-helpers.aspx