2010-06-30 7 views
2

J'ai une première couche de modèle Entity Framework 4, où j'ai une classe de base Product, puis différentes classes dérivées de la classe. Pour chaque type de produit, il existe une classe partielle, puis chacune des classes partielles utilise une classe buddy pour les annotations de données.Annotations de données dans MC2 - Problème avec la validation de la classe de base

[MetadataType(typeof(Product_Validation))] 
public partial class Product : EntityObject 
{ 
    private List<RuleViolation> ruleViolations = new List<RuleViolation>(); 
} 

puis

public class Product_Validation 
{ 


    [DisplayName("Model Name")] 
    public string ModelName { get; set; } 

    [Required(ErrorMessage = "A description is required")] 
    [StringLength(2, ErrorMessage = "must be 2 or more")] 
    public string Description { get; set; } 
} 

La question que j'ai rencontré est que la validation de la classe de base (pour le produit) ne se produit pas côté serveur dans mon application ASP.NET MVC2. Je n'ai pas encore essayé le côté client.

Les classes dérivées de Product, telles que CD, ont un fonctionnement de validation. Je sais que le câblage de la classe buddy fonctionne pour la classe de produits de base parce que les noms d'affichage que j'utilise sont utilisés. Quand je fais ma liaison pour le modèle, j'utilise la classe dérivée (CD).

Des idées?

J'ai regardé ce SO Post mais ça n'a pas l'air de me mettre en route.

Merci!

Répondre

1

Etes-vous modèle liant la base ou la classe dérivée?

Si je me souviens bien de quelques expériences il y a des mois, vous devez vous lier en tant que produit. Vous ne pouvez pas utiliser de CD dans vos méthodes d'action ou vos appels UpdateModel.

Vous devrez peut-être faire deux ensembles de liaison de modèle pour que cela fonctionne correctement. Une fois pour la validation du produit et une autre pour le CD.

+0

Si cela est vrai, je qualifierais cela de bon candidat pour une autre question et éventuellement une demande de fonctionnalité. –

+0

Je lie la classe dérivée. Comment cela fonctionne-t-il pour une vue alors si je veux à la fois le produit de base et le CD dérivé? J'ai une vue fortement typée qui hérite d'un viewmodel qui inclut la classe dérivée (CD). Merci –

+0

@John Ptacek Je n'ai aucune idée de ce que vous demandez. Si vous avez une vue avec un modèle de CD, vous avez également une vue avec un modèle de produit. – jfar