Dans le moteur de rasoir, j'ai utilisé la LabelFor
méthode d'assistance pour afficher le nom
Mais le nom d'affichage ne semble pas bon à afficher. donc je dois changer mon nom d'affichage comment le faire ....
@Html.LabelFor(model => model.SomekingStatus, new { @class = "control-label"})
Réponses:
Vous pouvez décorer votre propriété de modèle de vue avec l'
[DisplayName]
attribut et spécifier le texte à utiliser:[DisplayName("foo bar")] public string SomekingStatus { get; set; }
Ou utilisez une autre surcharge de l'assistant LabelFor qui vous permet de spécifier le texte:
@Html.LabelFor(model => model.SomekingStatus, "foo bar")
Et, non, vous ne pouvez pas spécifier un nom de classe dans MVC3 comme vous avez essayé de le faire, car l'
LabelFor
assistant ne le prend pas en charge. Cependant, cela fonctionnerait dans MVC4 ou 5.la source
@Html.LabelFor(model => model.SomekingStatus, "something other than foo bar")
C'était une vieille question, mais les réponses existantes ignorent le sérieux problème de la suppression des attributs personnalisés lorsque vous régénérez le modèle. J'ajoute une réponse plus détaillée pour couvrir les options actuellement disponibles.
Vous avez 3 options:
[DisplayName("Name goes here")]
attribut à la classe de modèle de données. L'inconvénient est que cela est jeté chaque fois que vous régénérez 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 est que vous devez répéter l'étiquette dans chaque vue.Option 3 - Ajouter une classe de métadonnées:
Microsoft permet de décorer les propriétés sur une classe Entity Framework, sans modifier la classe existante ! Ceci en ayant des classes de méta-données qui s'attachent à vos classes de base de données (effectivement une extension latérale de votre classe EF). Cela permet d'ajouter des attributs à la classe associée et non à la classe elle-même afin que les modifications ne soient pas perdues lorsque vous régénérez les modèles de données .
Par exemple, si votre classe de données est
MyModel
avec unSomekingStatus
propriété, vous pouvez le faire comme ceci:Déclarez d'abord une classe partielle du même nom (et en utilisant le même espace de noms), ce qui vous permet d'ajouter un attribut de classe sans être surchargé:
[MetadataType(typeof(MyModelMetaData))] public partial class MyModel { }
Toutes les classes de modèle de données générées sont des classes partielles, qui vous permettent d'ajouter des propriétés et des méthodes supplémentaires en créant simplement plus de classes du même nom (c'est très pratique et je l'utilise souvent, par exemple pour fournir des versions de chaîne formatées d'autres types de champs dans le modèle ).
Étape 2: ajoutez une classe de métatadonnées référencée par votre nouvelle classe partielle:
public class MyModelMetaData { // Apply DisplayNameAttribute (or any other attributes) [DisplayName("My New Label")] public string SomekingStatus; }
Référence: https://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.metadatatypeattribute(v=vs.110).aspx
Remarques:
[required]
etc.), vous devrez donc peut-être dupliquer ceux de la classe de métadonnées.la source
Vous pouvez modifier le texte des étiquettes en ornant la propriété avec le
DisplayName
attribut.[DisplayName("Someking Status")] public string SomekingStatus { get; set; }
Ou, vous pouvez écrire explicitement le HTML brut:
<label for="SomekingStatus" class="control-label">Someking Status</label>
la source
Décorez la propriété du modèle avec l'attribut DisplayName.
la source
@ Html.LabelFor (model => model.SomekingStatus, "foo bar")
la source