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


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


76
2018-05-02 19:27


asal


Jawaban:


Html.Label memberi Anda label untuk input yang namanya cocok dengan teks input yang ditentukan (lebih spesifik, 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 diberikan (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.LabelForModel sedikit lebih sulit. Ini mengembalikan label yang for nilai 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>

101
2018-05-02 20:09



Html.Label - Cukup buat label label dengan string apa pun yang dilewatkan ke konstruktor

Html.LabelFor - Membuat label untuk properti khusus itu. Ini sangat diketik. Secara default, ini hanya akan melakukan nama properti (dalam contoh di bawah ini, akan menghasilkan MyProperty jika atribut Tampilan 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 label apa untuk properti itu dan menampilkannya di mana-mana.


12
2018-05-02 20:06



Saya pikir bahwa penggunaan @Html.LabelForModel() harus dijelaskan lebih detail.

Metode LabelForModel mengembalikan elemen label HTML dan nama properti 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:

enter image description here

Referensi untuk menjawab di forum asp.net


6
2018-04-21 20:57



misalkan Anda memerlukan label dengan nama pengguna teks daripada Anda dapat membuatnya menggunakan 2 cara

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

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

Metode ke-2 menggunakan properti dari model Anda. Jika pandangan Anda mengimplementasikan sebuah model maka Anda dapat menggunakan metode kedua.

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


3
2018-05-02 19:52