проверка на стороне сервера с использованием аннотации данных не работает - PullRequest
1 голос
/ 29 ноября 2010

Я использовал настраиваемую страницу регистрации в своем приложении asp.net mvc 2.0. Для этого я использовал представление Calss Model, называемое UserProfile.cs, унаследованное от класса Profile Base.Теперь я хочу применить проверку на стороне сервера к классу UserProfile. Но это не работает.Мой класс профиля пользователя выглядит следующим образом:

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);
            }
        }
}

Я добавил ссылку System.ComponentModel.DataAnnotation. Пока он не работает. Пожалуйста, скажите мне, почему он не работает.

Ответы [ 2 ]

1 голос
/ 29 ноября 2010

Чтобы добавить аннотации данных к существующей модели, вы можете сделать это следующим образом:

[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; }
}

В моем случае генерируется моя оригинальная модель, поэтому я добавляю свою проверку с использованием атрибута MetadataTypeAttribute, как показано.

Мой сгенерированный объект будет выглядеть примерно так:

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

    public virtual string LastName
    {
        get;
        set;
    }
}

Вы можете видеть, что при использовании дополнительного класса через тип медадата вам необходимо добавить свойства как объект и с тем же именем.

Если вы не пытаетесь добавить валидацию к существующей модели таким способом, вам не нужен атрибут MetadataTypeAttribute.

0 голосов
/ 29 ноября 2010

проверить этот вопрос и ответы -

подтверждение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...