web-dev-qa-db-fra.com

Pourquoi devrais-je utiliser LabelFor dans MVC?

Pourquoi devrais-je utiliser LabelFor au lieu de <label>?

par exemple.

@Html.LabelFor(model => model.FirstName)
@Html.DisplayFor(model => model.FirstName)

contre

<label for="FirstName">First Name</label>
@Html.DisplayFor(model => model.FirstName)

Suite à ce qui précède, @ p.s.w.g a couvert l'aspect DRY de cette question. Je voudrais également savoir si cela aide à la localisation, c'est-à-dire différentes étiquettes basées sur le paramètre de langue actuel.

35
Jamie

Eh bien, si vous avez décoré vos modèles avec DisplayNameAttribute comme ceci:

[DisplayName("First Name")]
string FirstName { get; set; }

Ensuite, vous spécifiez uniquement ce que le texte de l'étiquette serait au même endroit. Vous devrez peut-être créer une étiquette similaire à plusieurs endroits, et si jamais vous deviez changer le texte de l'étiquette, il serait pratique de ne le faire qu'une seule fois.

Ceci est encore plus important si vous souhaitez localiser votre application pour différentes langues, ce que vous pouvez faire avec DisplayAttribute :

[Display(Name = "FirstNameLabel", ResourceType = typeof(MyResources))]
string FirstName { get; set; }

Cela signifie également que vous aurez des vues plus fortement typées. Il est facile de toucher une chaîne comme "FirstName" si vous devez taper beaucoup, mais l'utilisation de la méthode d'assistance permettra au compilateur de détecter de telles erreurs la plupart du temps.

46
p.s.w.g

LabelFor vous permet de tout contrôler depuis votre modèle de vue sans vous soucier du contrôle.

Disons que vous utilisez le même modèle de vue à 2 endroits, cela signifie que vous pouvez changer le nom à un endroit pour mettre à jour tous les contrôles.

N'a pas avoir à utiliser, mais il a ses utilisations.

5
webnoob