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

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

Html.Label vous donne une étiquette pour une entrée dont le nom correspond au texte d’entrée spécifié (plus précisément, pour la propriété de modèle correspondant à l’expression de chaîne):

 // Model public ssortingng Test { get; set; } // View @Html.Label("Test") // Output  

Html.LabelFor vous donne une étiquette pour la propriété représentée par l’expression fournie (généralement une propriété de modèle):

 // Model public class MyModel { [DisplayName("A property")] public ssortingng Test { get; set; } } // View @model MyModel @Html.LabelFor(m => m.Test) // Output  

Html.LabelForModel est un peu plus compliqué. Il renvoie une étiquette dont la valeur est celle du paramètre représenté par l’object modèle. Ceci est particulièrement utile pour les modèles d’éditeur personnalisés. Par exemple:

 // Model public class MyModel { [DisplayName("A property")] public ssortingng Test { get; set; } } // Main view @Html.EditorFor(m => m.Test) // Inside editor template @Html.LabelForModel() // Output  

Html.LabelHtml.Label simplement une étiquette avec la chaîne transmise au constructeur

Html.LabelFor – Crée une étiquette pour cette propriété spécifique. Ceci est fortement typé. Par défaut, cela fera simplement le nom de la propriété (dans l’exemple ci-dessous, cela générera MyProperty si cet atsortingbut Display n’était pas là). Un autre avantage de ceci est que vous pouvez définir la propriété d’affichage dans votre modèle et c’est ce qui sera mis ici:

 public class MyModel { [Display(Name="My property title") public class MyProperty{get;set;} } 

A votre avis:

 Html.LabelFor(x => x.MyProperty) //Outputs My property title 

Dans ce qui précède, LabelFor affichera . Cela fonctionne bien afin que vous puissiez définir en un endroit ce que sera l’étiquette de cette propriété et la montrer partout.

Je pense que l’utilisation de @Html.LabelForModel() devrait être expliquée plus en détail.

La méthode LabelForModel renvoie un élément HTML et le nom de la propriété représentée par le modèle.

Vous pouvez vous référer au code suivant:

Code dans le modèle:

 using System.ComponentModel; [DisplayName("MyModel")] public class MyModel { [DisplayName("A property")] public ssortingng Test { get; set; } } 

Code en vue:

 @Html.LabelForModel() 
@Html.LabelFor(model => model.Test, new { @class = "control-label col-md-2" })
@Html.EditorFor(model => model.Test) @Html.ValidationMessageFor(model => model.Test)

La capture d’écran de sortie:

entrer la description de l'image ici

Référence pour répondre sur le forum asp.net

Supposons que vous ayez besoin d’une étiquette avec un nom d’utilisateur texte que vous pouvez obtenir de deux manières

 [1]@Html.Label("CustomerName") [2]@Html.LabelFor(a => a.CustomerName) //strongly typed 

2ème méthode utilisé une propriété de votre modèle. Si votre vue implémente un modèle, vous pouvez utiliser la 2ème méthode.

Plus d’infos s’il vous plaît visitez le lien ci-dessous

http://weblogs.asp.net/scottgu/archive/2010/01/10/asp-net-mvc-2-strongly-typed-html-helpers.aspx