Arasındaki fark nedir @Html.Label()
, @Html.LabelFor()
ve @Html.LabelForModel()
yöntemler?
Arasındaki fark nedir @Html.Label()
, @Html.LabelFor()
ve @Html.LabelForModel()
yöntemler?
Yanıtlar:
Html.Label
size adı belirtilen girdi metniyle eşleşen bir girdi için bir etiket verir (daha spesifik olarak, dize ifadesiyle eşleşen model özelliği için):
// Model
public string Test { get; set; }
// View
@Html.Label("Test")
// Output
<label for="Test">Test</label>
Html.LabelFor
size sağlanan ifade tarafından temsil edilen özellik için bir etiket verir (tipik olarak bir model özelliği):
// 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
biraz daha zor. for
Değeri model nesnesi tarafından temsil edilen parametrenin değeri olan bir etiket döndürür . Bu, özellikle özel düzenleyici şablonları için kullanışlıdır. Örneğin:
// 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)
ya @Html.EditorFor(m => m.Test)
?
Html.Label
- Yapıcıya aktarılan dize ne olursa olsun bir etiket etiketi oluşturur
Html.LabelFor
- Söz konusu mülk için bir etiket oluşturur. Bu kesinlikle yazılmıştır. Varsayılan olarak, bu sadece mülkün adını yapacaktır (aşağıdaki örnekte, bu Display özniteliği orada değilse MyProperty sonucunu verecektir). Bunun bir başka yararı da, modelinizde display özelliğini ayarlayabilmenizdir ve bu buraya yazılacak:
public class MyModel
{
[Display(Name="My property title")
public class MyProperty{get;set;}
}
Size göre:
Html.LabelFor(x => x.MyProperty) //Outputs My property title
Yukarıda LabelFor görüntülenecektir <label for="MyProperty">My property title</label>
. Bu güzel çalışır, böylece o mülkün etiketinin ne olacağını tek bir yerde tanımlayabilir ve her yerde göstermesini sağlayabilirsiniz.
LabelForModel
bunun için değil - cevabıma bakın.
Kullanımının @Html.LabelForModel()
daha detaylı anlatılması gerektiğini düşünüyorum .
LabelForModel Yöntemi, bir HTML etiket öğesi ve model tarafından temsil edilen özelliğin özellik adını döndürür.
Aşağıdaki koda başvurabilirsiniz:
Modeldeki kod:
using System.ComponentModel;
[DisplayName("MyModel")]
public class MyModel
{
[DisplayName("A property")]
public string Test { get; set; }
}
Görünümdeki kod:
@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>
Çıktı ekran görüntüsü:
2 yolla elde edebileceğinizden daha fazla özel ad içeren bir etikete ihtiyacınız olduğunu varsayalım
[1]@Html.Label("CustomerName")
[2]@Html.LabelFor(a => a.CustomerName) //strongly typed
2. yöntem, modelinizden bir özellik kullandı. Görünümünüz bir modeli uyguluyorsa, 2. yöntemi kullanabilirsiniz.
Daha fazla bilgi lütfen aşağıdaki bağlantıyı ziyaret edin
http://weblogs.asp.net/scottgu/archive/2010/01/10/asp-net-mvc-2-strongly-typed-html-helpers.aspx