Câu hỏi Sự khác nhau giữa Html.Label, Html.LabelFor và Html.LabelForModel


Sự khác biệt giữa @Html.Label(), @Html.LabelFor() và @Html.LabelForModel() phương pháp?


76
2018-05-02 19:27


gốc


tất cả của nó trong tên. Một là dành cho nhãn chung, một là dành cho các nhãn thuộc tính mô hình cụ thể và một cho các nhãn mô hình chung. - Francisco Afonso
@ FranciscoAfonso Điều đó không thực sự giải thích những gì họ thực sự làm, mặc dù. - Ant P


Các câu trả lời:


Html.Label cung cấp cho bạn nhãn cho đầu vào có tên khớp với văn bản nhập được chỉ định (cụ thể hơn, đối với thuộc tính mô hình khớp với biểu thức chuỗi):

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

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

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

Html.LabelFor cung cấp cho bạn nhãn cho thuộc tính được biểu thị bằng biểu thức được cung cấp (thường là thuộc tính mô hình):

// 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 là một chút phức tạp hơn. Nó trả về một nhãn for giá trị là tham số được đại diện bởi đối tượng mô hình. Điều này rất hữu ích, đặc biệt, đối với các mẫu trình chỉnh sửa tùy chỉnh. Ví dụ:

// 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>

101
2018-05-02 20:09



Là nó @Html.EditorFor(m => Test) hoặc là @Html.EditorFor(m => m.Test) ? - Fabricio


Html.Label - Chỉ cần tạo thẻ nhãn với bất kỳ chuỗi nào được truyền vào hàm tạo

Html.LabelFor - Tạo nhãn cho thuộc tính cụ thể đó. Điều này được đánh máy mạnh mẽ. Theo mặc định, điều này sẽ chỉ làm tên của thuộc tính (trong ví dụ dưới đây, nó sẽ xuất MyProperty nếu thuộc tính Display đó không có). Một lợi ích khác của việc này là bạn có thể đặt thuộc tính hiển thị trong mô hình của mình và đó là những gì sẽ được đặt ở đây:

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

Theo quan điểm của bạn:

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

Ở trên, LabelFor sẽ hiển thị <label for="MyProperty">My property title</label>. Điều này làm việc độc đáo để bạn có thể xác định ở một nơi những gì các nhãn cho tài sản đó sẽ được và có nó hiển thị ở khắp mọi nơi.


12
2018-05-02 20:06



Đây không phải là những gì LabelForModel dành cho - xem câu trả lời của tôi. - Ant P
@ AntP Bạn nói đúng, tôi đã xóa nó. - CorrugatedAir


Tôi nghĩ rằng việc sử dụng @Html.LabelForModel() nên được giải thích chi tiết hơn.

Phương thức LabelForModel trả về một phần tử nhãn HTML và tên thuộc tính của thuộc tính được đại diện bởi mô hình.

Bạn có thể tham khảo mã sau:

Mã trong mô hình:

using System.ComponentModel;

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

Mã trong chế độ xem:

@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>

Ảnh chụp màn hình đầu ra:

enter image description here

Tham khảo để trả lời trên diễn đàn asp.net


6
2018-04-21 20:57





giả sử bạn cần nhãn có tên người dùng văn bản hơn bạn có thể đạt được bằng cách sử dụng 2 cách

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

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

Phương pháp thứ 2 đã sử dụng thuộc tính từ mô hình của bạn. Nếu chế độ xem của bạn thực hiện mô hình thì bạn có thể sử dụng phương pháp thứ 2.

Thông tin thêm vui lòng truy cập vào liên kết dưới đây

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


3
2018-05-02 19:52



Còn Html.LabelForModel thì sao? - Fabricio
trả về một nhãn với một chuỗi đại diện cho mô hình, giống như tất cả họ làm những gì tên của họ nói ... - Francisco Afonso
xin lỗi tôi chưa từng thấy và sử dụng @ html.LableForModel :) - Mahesh Chitroda
xem bên dưới liên kết msdn.microsoft.com/en-in/library/… - Mahesh Chitroda