2010-03-31 7 views
0

Dans le cas suivant majoration MVC:accessible <label> dans MVC

<p> 
     <label for="forenamesLabel">Forename(s):</label> 
     <%: Html.TextBoxFor(model => model.ConsultantRegistrationDTO.Forenames) %> 
     <%: Html.ValidationMessageFor(model => model.ConsultantRegistrationDTO.Forenames, "*") %> 
    </p> 

Comment me est-il possible de régler avec précision l'étiquette/@ pour attribut à l'identifiant de la zone de texte généré par MVC? Si j'utilise @id en tant qu'option HTML, cela ne casserait-il pas ma liaison?

Répondre

1

Vous pouvez utiliser

Html.LabelFor(c model => model.ConsultantRegistrationDTO.Forenames) 

Ensuite, dans votre modèle, vous devez spécifier l'DisplayNameAttribute de System.ComponentModel.DataAnnotations. Donc, votre modèle ressemblerait à quelque chose comme ceci:

public class ConsultantModel 
{ 
    [DisplayName("Forenames")] 
    public string Forenames { get; set; } 
} 
+0

Merci, ça y est. Le seul problème est que mon modèle est une classe générée à partir de WCF, donc je ne peux pas ajouter d'attribut. Ai-je tort d'utiliser mon modèle en tant que classe WCF DataContract ou existe-t-il un autre moyen? (Désolé, nouveau à MVC) –

1

Comme cela a été suggéré par Keltex vous pouvez utiliser Html.LabelFor avec un décorateur DisplayName. Quelques considérations qui vont avec cela.

Les décorateurs LabelFor et DisplayName sont spécifiques à MVC 2. Cela peut être ou ne pas être une option pour vous.

L'utilisation de cette méthode, en particulier à l'aide du décorateur DisplayName, introduit des problèmes de vue dans votre modèle, ce qui n'est parfois pas souhaitable. Il est généralement préférable de créer un ViewModel et d'utiliser le décorateur pour préserver la séparation des préoccupations. Cela vous permet également d'utiliser DisplayNameAttribute lorsque votre modèle est généré automatiquement comme vous l'avez dit.

+0

MVC 2 est très bien. Le projet est attendu après le 12 avril, donc ça devrait aller. Merci beaucoup. Je vais regarder ce que vous avez dit. Vous avez raison dans la question des préoccupations. J'utilise déjà un ViewModel, qui a une propriété qui est mon objet DTO de WCF. Je vais jouer avec ce que vous suggérez, en conjonction avec les classes de copains. http://davidhayden.com/blog/dave/archive/2009/08/10/AspNetMvc20BuddyClassesMetadataType.aspx –

Questions connexes