Comment faire pour modifier le nom d'affichage pour LabelFor de rasoir dans mvc3?
Dans le moteur de rasoir, j'ai utilisé LabelFor
méthode d'aide à afficher le nom
Mais le nom d'affichage est ne semble pas être la bonne pour l'affichage.
donc j'ai besoin de changer mon nom d'affichage de comment le faire....
@Html.LabelFor(model => model.SomekingStatus, new { @class = "control-label"})
- C'est une très vieille question, mais toujours très pertinente aux MVC de codage. Il y a des problèmes avec les deux solutions proposées jusqu'à présent, j'ai donc ajouté une réponse plus détaillée couvrant tous les 3 options s'offrent à vous.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez décorer votre modèle de vue de la propriété avec le
[DisplayName]
d'attributs et de spécifier le texte à utiliser:Ou utiliser une autre surcharge de la LabelFor helper qui permet de spécifier le texte:
Et, non, vous ne pouvez pas spécifier un nom de classe dans MVC3 que vous avez essayé de faire ce que l'
LabelFor
helper ne supporte pas que. Cependant, ce serait de travailler dans MVC4 ou 5.@Html.LabelFor(model => model.SomekingStatus, "something other than foo bar")
C'était une vieille question, mais les réponses existantes ignorer la question grave de jeter tous les attributs personnalisés lorsque vous régénérer le modèle. Je suis l'ajout d'une réponse plus détaillée à couvrir les diverses options disponibles.
Vous avez 3 options:
[DisplayName("Name goes here")]
attribut dans le modèle de données de la classe. L'inconvénient est que cela est jeté chaque fois que vous régénérer les modèles de données.Html.LabelFor
. par exemple,@Html.LabelFor(model => model.SomekingStatus, "My New Label", new { @class = "control-label"})
Référence: https://msdn.microsoft.com/en-us/library/system.web.mvc.html.labelextensions.labelfor(v=vs. 118).aspx L'inconvénient de cette est que vous devez répéter l'étiquette dans chaque vue.Option 3 - Ajouter une Méta-Classe de Données:
Microsoft permet pour la décoration de propriétés sur une Entité Cadre de la classe, sans modifier la classe existante! Ceci par le fait d'avoir des méta-données de classes qui se fixent à l'classes de base de données (en fait, une extension latérale de votre EF classe). Cela permet d'attributs à ajouter de la classe associée et non pas à la classe elle-même de sorte que les modifications ne sont pas perdus lors de la régénération des modèles de données.
Par exemple, si votre classe de données est
MyModel
avec unSomekingStatus
biens, vous pouvez le faire comme ceci:D'abord déclarer une classe partielle du même nom (et en utilisant le même espace de noms), qui permet d'ajouter un attribut de classe sans être remplacée:
Toutes les données générées par le modèle de classes sont des classes partielles, qui vous permettent d'ajouter des propriétés et des méthodes de simplement créer plus de classes du même nom (ce qui est très pratique et j'ai souvent l'utiliser par exemple pour fournir de la chaîne mise en forme des versions d'autres types de champ dans le modèle).
Étape 2: ajouter un metatadata classe référencées par votre nouvelle classe partielle:
Référence: https://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.metadatatypeattribute(v=vs. 110).aspx
Notes:
[required]
etc) de sorte que vous pouvez avoir besoin de dupliquer ceux de la Méta-classe de données.Vous pouvez changer les étiquettes de texte par ornent la propriété avec le
DisplayName
attribut.Ou, vous pouvez écrire le code HTML brut explicitement:
Décorer le modèle de la propriété avec l'attribut DisplayName.
@Html.LabelFor(modèle => le modèle.SomekingStatus, "foo bar")