Quelle est la différence entre les méthodes @Html.Label()
, @Html.LabelFor()
et @Html.LabelForModel()
?
Réponses
Trop de publicités?Html.Label
vous donne une étiquette pour une entrée dont le nom correspond à l'entrée spécifié texte (plus précisément, pour le modèle de propriété correspondant à l'expression de chaîne):
// Model
public string Test { get; set; }
// View
@Html.Label("Test")
// Output
<label for="Test">Test</label>
Html.LabelFor
vous donne une étiquette de la propriété représentée par la condition de l'expression (en général, un modèle de la propriété):
// 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
est un peu plus compliqué. Elle renvoie d'un label dont for
de la valeur est le paramètre représenté par le modèle de l'objet. C'est utile, en particulier, pour la coutume de l'éditeur de modèles. Par exemple:
// 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.Label
- Crée une balise d'étiquette avec quelle que soit la chaîne de caractères passée dans le constructeur est
Html.LabelFor
- Crée un label pour cette propriété. C'est fortement typé. Par défaut, cela fera juste le nom de la propriété (dans l'exemple ci-dessous, il vous sortie MyProperty si l'attribut d'Affichage n'était pas là). Un autre avantage de ceci est que vous pouvez définir les propriétés d'affichage de votre modèle, et c'est ce qui va être le mettre ici:
public class MyModel
{
[Display(Name="My property title")
public class MyProperty{get;set;}
}
De votre point de vue:
Html.LabelFor(x=>x.MyProperty) //Outputs My property title
Ci-dessus, LabelFor affiche Mon tableau de propriété. Cela fonctionne très bien, de sorte que vous pouvez définir dans un seul endroit ce que le label pour le bien être et l'afficher partout.
supposons que vous avez besoin d'une étiquette avec le texte customername que vous pouvez réaliser à l'aide de 2 façons
[1]@Html.Label("CustomerName")
[2]@Html.LabelFor(a => a.CustomerName) //strongly typed
2ème méthode a utilisé une propriété à partir de votre modèle.si votre vue de mettre en œuvre le modèle que vous pouvez utiliser la 2ème méthode.
Plus d'infos veuillez visiter le lien ci-dessous
http://weblogs.asp.net/scottgu/archive/2010/01/10/asp-net-mvc-2-strongly-typed-html-helpers.aspx