Apa perbedaan antara @Html.Label()
, @Html.LabelFor()
dan @Html.LabelForModel()
metode?
Apa perbedaan antara @Html.Label()
, @Html.LabelFor()
dan @Html.LabelForModel()
metode?
Jawaban:
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.LabelForModel
sedikit lebih rumit. Ini mengembalikan label yang for
nilainya 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>
@Html.EditorFor(m => Test)
atau @Html.EditorFor(m => m.Test)
?
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.
LabelForModel
- lihat jawaban saya.
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:
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