2010-08-23 6 views
2

ok j'ai défini un éditeur partagé pour la chaîne comme ce qui suitasp 2 mvc EditorFor comportement étrange

<% @ Control Language = "C#" Inherits = "System.Web.Mvc.ViewUserControl" %>
<% = Html.LabelFor (model => modèle)%>
<% = Html.TextBoxFor (model => modèle)%>
<% = Html.ValidationMessageFor (model => modèle )% >

maintenant je vous appelle l'éditeur personnalisé comme celui-ci dans un autre contrôle

 <%= Html.EditorFor(model=>model.Username)%> 
     <%= Html.EditorFor(model=>model.Email)%> 
     <%= Html.EditorFor(model=>model.Password)%> 

mon modèle est comme ça

[Required(ErrorMessage="Le nom d'utilisateur est requis.")] 
    [DataType(DataType.Text)] 
    [DisplayName("Nom d'utilisateur")] 
    public string Username { get; set; } 

    [Required(ErrorMessage = "L'email est requis.")] 
    [DataType(DataType.EmailAddress)] 
    [DisplayName("Courriel")] 
    public string Email { get; set; } 

    [Required(ErrorMessage = "Le mot de passe est requis.")] 
    [ValidatePasswordLength] 
    [DataType(DataType.Password)] 
    [DisplayName("Mot de passe")] 
    public string Password { get; set; } 

L'affichage seulement est rendu est le champ E-mail. Les deux autres ne sont pas rendus? Si je supprime le DataType.Text et DataType.Password alors tous les champs d'affichage sont rendus ??

Comportement très étrange ...

Quelqu'un sait pourquoi?

+0

pouvez-vous me dire pourquoi vous avez besoin des types de données? – Stefanvds

+0

je pourrais aller sans mais pourquoi pas? – mateo

Répondre

0

Vous avez besoin d'un ValidationSummary pour afficher les erreurs de toutes les propriétés d'un modèle. Sinon, vous aurez besoin d'un ValidationMessageFor pour chaque propriété du modèle.

Cela fonctionne:

<%= Html.ValidationSummary() %> 

Ou ceci:

<%= Html.ValidationMessageFor(model.UserName) %> 
<%= Html.ValidationMessageFor(model.Email) %> 
<%= Html.ValidationMessageFor(model.Password) %> 
+0

Il n'a pas posé de questions sur les messages de validation. Comment savez-vous qu'il n'a pas de résumé de validation dans sa vue parente? –

+0

Depuis que cette question a été changée il y a 3 heures et que j'ai répondu il y a 7 mois, je ne peux pas commenter la confusion. –

+0

Désolé, n'a pas remarqué la date. Cependant, la modification récente était juste une re-tag, pas de changement de contenu à la question. –

0

contrôles DataType quel type de modèle est utilisé pour le rendu. Lorsque vous spécifiez Texte ou Mot de passe, MVC sélectionne les modèles par défaut pour ceux-ci (ils sont intégrés) et ignore votre modèle.

Le courrier électronique fonctionne parce qu'il n'y a pas de modèle d'e-mail intégré, et donc il retombe en chaîne.

EDIT: Je pense que j'ai mal compris. Voulez-vous dire qu'ils ne rendent pas du tout? Avez-vous des modèles de mot de passe et de texte vides dans votre dossier EditorTemplates?