89 votes

Quelle est la différence entre Html.Label, Html.LabelFor et Html.LabelForModel

Quelle est la différence entre les méthodes @Html.Label() , @Html.LabelFor() et @Html.LabelForModel() ?

112voto

Ant P Points 12459

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>

12voto

CorrugatedAir Points 507

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.

4voto

Mahesh Chitroda Points 113

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X