2010-11-29 5 views
1

J'ai utilisé la page d'inscription personnalisée dans mon application asp.net mvc 2.0.Pour que j'ai utilisé une vue Modèle calss appelé UserProfile.cs hérité de la classe Profile Base . Maintenant, je veux appliquer la validation côté serveur à la classe UserProfile. Mais cela ne fonctionne pas. Mon profil utilisateur classe est la suivante,validation côté serveur à l'aide de l'annotation de données ne fonctionne pas dans asp.net mvc 2.0

using System.ComponentModel; 
using System.ComponentModel.DataAnnotations; 

[MetadataType(typeof(UserProfile))] 
    public class UserProfile : ProfileBase 
    { 
     [Required] 
     public virtual string FirstName 
     { 
      get 
      { 
       return ((string)(this.GetPropertyValue("FirstName"))); 
      } 
      set 
      { 
       this.SetPropertyValue("FirstName", value); 
      } 
     }  
     [Required] 
     public virtual string LastName 
     { 
      get 
      { 
       return ((string)(this.GetPropertyValue("LastName"))); 
      } 
      set 
      { 
       this.SetPropertyValue("LastName", value); 
      } 
     } 


     [Required] 
     public virtual string LoginId 
     { 
      get 
      { 
       return ((string)(this.GetPropertyValue("LoginId"))); 
      } 
      set 
      { 
       this.SetPropertyValue("LoginId", value); 
      } 
     } 
} 

J'ai ajouté le System.ComponentModel.DataAnnotation reference.still il ne fonctionne pas .Please me dire pourquoi il ne fonctionne pas.

Répondre

1

Pour ajouter les annotations de données à un modèle existant que vous pouvez faire est la suivante:

[MetadataType(typeof(User_Validation))] 
public partial class User 
{ 
} 

public class User_Validation 
{ 
    [Required, StringLength(50)] 
    public object FirstName { get; set; } 

    [Required, StringLength(50)] 
    public object LastName { get; set; } 
} 

Dans mon cas, mon modèle original est généré qui est la raison pour laquelle j'ajouter ma validation à l'aide du MetadataTypeAttribute comme indiqué.

Mon objet généré ressemblerait à quelque chose comme:

public partial class User 
{ 
    public virtual string FirstName 
    { 
     get; 
     set; 
    } 

    public virtual string LastName 
    { 
     get; 
     set; 
    } 
} 

Vous pouvez voir que lorsque vous utilisez la classe supplémentaire par le type medadata que vous devez ajouter les propriétés comme objet et avec le même nom.

Si vous n'essayez pas d'ajouter la validation à un modèle existant de cette manière, vous n'avez pas besoin de MetadataTypeAttribute.

Questions connexes