Apa perbedaan antara Html.Label, Html.LabelFor dan Html.LabelForModel


87

Apa perbedaan antara @Html.Label(), @Html.LabelFor()dan @Html.LabelForModel()metode?


semuanya atas nama. Satu untuk label umum, satu untuk label properti model tertentu, dan satu lagi untuk label model umum.
Francisco Afonso

6
@FranciscoAfonso Itu tidak menjelaskan apa yang sebenarnya mereka lakukan.
Ant P

Jawaban:


111

Html.Label memberi Anda label untuk masukan yang namanya cocok dengan teks masukan yang ditentukan (lebih khusus lagi, untuk properti model yang cocok dengan ekspresi string):

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

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

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

Html.LabelFor memberi Anda label untuk properti yang diwakili oleh ekspresi yang disediakan (biasanya properti model):

// 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.LabelForModelsedikit lebih rumit. Ini mengembalikan label yang fornilainya adalah parameter yang diwakili oleh objek model. Ini berguna, khususnya, untuk template editor kustom. Sebagai contoh:

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

apakah itu @Html.EditorFor(m => Test)atau @Html.EditorFor(m => m.Test)?
Fabricio

12

Html.Label - Hanya membuat tag label dengan string apa pun yang diteruskan ke konstruktor

Html.LabelFor- Membuat label untuk properti khusus tersebut. Ini diketik dengan kuat. Secara default, ini hanya akan melakukan nama properti (dalam contoh di bawah ini, ini akan menampilkan MyProperty jika atribut Display itu tidak ada). Manfaat lain dari ini adalah Anda dapat mengatur properti tampilan dalam model Anda dan itulah yang akan diletakkan di sini:

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

Dalam pandangan Anda:

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

Di atas, LabelFor akan ditampilkan <label for="MyProperty">My property title</label>. Ini berfungsi dengan baik sehingga Anda dapat menentukan di satu tempat akan seperti apa label untuk properti itu dan menampilkannya di mana-mana.


Ini sebenarnya bukan untuk apa LabelForModel- lihat jawaban saya.
Ant P

6

Menurut saya penggunaan dari @Html.LabelForModel()harus dijelaskan lebih detail.

Metode LabelForModel mengembalikan elemen label HTML dan nama properti dari properti yang diwakili oleh model.

Anda bisa merujuk ke kode berikut:

Kode dalam model:

using System.ComponentModel;

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

Kode dalam tampilan:

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

Tangkapan layar keluaran:

masukkan deskripsi gambar di sini

Referensi jawaban di forum asp.net


4

misalkan Anda membutuhkan label dengan nama kustom teks daripada Anda dapat mencapainya dengan 2 cara

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

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

Metode kedua menggunakan properti dari model Anda. Jika tampilan Anda mengimplementasikan model, Anda dapat menggunakan metode ke-2.

Info lebih lanjut silakan kunjungi tautan di bawah ini

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


Bagaimana dengan Html.LabelForModel?
Fabricio

mengembalikan label dengan string yang mewakili model, seperti mereka semua melakukan apa yang dikatakan namanya ...
Francisco Afonso

maaf saya tidak pernah melihat dan menggunakan @ html.LableForModel :)
Mahesh Chitroda

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.