Apa perbedaan antara @Html.Label()
, @Html.LabelFor()
dan @Html.LabelForModel()
metode?
asp.net-mvc
razor
Fabricio
sumber
sumber
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 yangfor
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>
sumber
@Html.EditorFor(m => Test)
atau@Html.EditorFor(m => m.Test)
?Html.Label
- Hanya membuat tag label dengan string apa pun yang diteruskan ke konstruktorHtml.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.sumber
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:
Referensi jawaban di forum asp.net
sumber
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
sumber