Dans un moteur de rasoir, j’ai utilisé la méthode auxiliaire LabelFor
pour afficher le nom.
Mais le nom d'affichage ne semble pas être bon à afficher .. donc je dois changer mon nom d'affichage comment le faire ....
@Html.LabelFor(model => model.SomekingStatus, new { @class = "control-label"})
Vous pouvez décorer votre propriété de modèle de vue avec l'attribut [DisplayName]
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'assistant LabelFor
ne le prend pas en charge. Cependant, cela fonctionnerait dans MVC4 ou 5.
C'était une vieille question, mais les réponses existantes ignoraient le problème sérieux de jeter tous les attributs personnalisés lorsque vous régénériez le modèle. J'ajoute une réponse plus détaillée pour couvrir les options actuellement disponibles.
[DisplayName("Name goes here")]
à 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 de ceci est que vous doit répéter l’étiquette dans toutes les vues.Microsoft permet de décorer des propriétés sur une classe Entity Framework, sans modifier la classe existante! Ceci grâce à des classes de méta-données qui s'attachent à vos classes de base de données (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 lors de la régénération des modèles de données.
Par exemple, si votre classe de données est MyModel
avec une propriété SomekingStatus
, vous pouvez le faire comme suit:
Commencez par déclarer une classe partielle du même nom (et en utilisant le même espace de nom), ce qui vous permettra 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, ce qui vous permet d'ajouter des propriétés et des méthodes supplémentaires en créant simplement plus de classes du même nom (très pratique, 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;
}
[required]
etc.), de sorte que vous devrez peut-être dupliquer ceux de la classe Meta-data.Vous pouvez modifier le texte des étiquettes en ornant la propriété avec l'attribut DisplayName
.
[DisplayName("Someking Status")]
public string SomekingStatus { get; set; }
Ou, vous pouvez écrire le code HTML brut explicitement:
<label for="SomekingStatus" class="control-label">Someking Status</label>
Décorez la propriété du modèle avec l'attribut DisplayName.
@ Html.LabelFor (model => model.SomekingStatus, "barre de foo")