0

Je rencontre des problèmes avec mvc2. J'utilise Entity Framework comme ORM. J'ai utilisé le générateur d'entité POCO pour créer des objets POCO. J'ai déplacé les objets générés dans un projet séparé. J'ai suivi les étapes décrites ici (Tutorial). Ceci est ma structure de projetLes attributs DataAnnotation ne fonctionnent pas dans Asp.Net MVC2

Sports.Data - Entité Frmework et d'accès aux données

Sports.Entities - Les objets poco générés et les classes de copain

Sports.Web - L'application web

Dans le Projet Sports.Entities J'ai créé des classes de buddy pour les pocos générés.

Le problème que j'ai est que les attributs sont ignorés par le mvc. La validation ne fonctionne pas et le texte d'étiquette correct n'est pas affiché. Au lieu de 'Shirt Size', 'ShirtSize' est affiché.

Qu'est-ce que je fais mal?

Merci pour toute aide.

Voici le code.

<div> 
    <%: Html.LabelFor(m => m.Player.ShirtSize)%> 
</div> 
<div class="editor-field"> 
    <%: Html.EditorFor(m => m.Player.ShirtSize) %> 
    <%: Html.ValidationMessageFor(m => m.Player.ShirtSize)%> 
<div> 

    namespace Sports.Entities 
{ 
    [MetadataType(typeof(PlayerMetadata))] 
    public partial class Player 
    { 
     public double PointsPerGame { 
      get { return (double) this.Points/this.MatchesPlayed; } 
     } 
    } 
    public class PlayerMetadata 
    { 
     [Required(AllowEmptyStrings = false, ErrorMessage = "First Name is required.")] 
     [StringLength(50, ErrorMessage = "First Name must be 50 characters or less")] 
     [DataType(DataType.Text)] 
     object FirstName { get; set; } 

     [Required(AllowEmptyStrings = false, ErrorMessage = "Last Name is required.")] 
     [StringLength(50, ErrorMessage = "First Name must be 50 characters or less")] 
     [DataType(DataType.Text)] 
     object LastName { get; set; } 

     [Required(ErrorMessage = "Shirt Size is required.")] 
     [EnumDataType(typeof(ShirtSizeEnum), ErrorMessage = "Shirt Size is invalid.")] 
     [DisplayName("Shirt Size")] 
     object ShirtSize { get; set; } 

     [Required(ErrorMessage = "Gender is required.")] 
     [EnumDataType(typeof(GenderEnum) , ErrorMessage = "Gender is invalid.")] 
     object Gender { get; set; } 

     [Required(AllowEmptyStrings = false , ErrorMessage = "Date of birth is required.")] 
     [DataType(DataType.Date)] 
     object DateOfBirth { get; set; } 
    } 
} 

Répondre

1

Merci pour votre réponse. J'ai compris le problème. Les propriétés dans les classes buddy doivent être publiques. Tout a commencé à fonctionner après que j'ai rendu les propriétés publiques.

public object ShirtSize { get; set; } 
0

Hmm, le code que vous avez posté semble assez solide. Votre opinion est-elle fortement typée et héritant de la classe appropriée?

Inherits="System.Web.Mvc.ViewPage(Of YourWebApp.Sports.Entities.Player) 

aussi, cela peut sembler une question stupide, mais êtes-vous passer l'objet Player peuplé revenir à la vue à la fois lorsque vous remplissez la vue et lorsque vous postez en arrière? et enfin vous assurez-vous de vérifier

if ModelState.IsValid?