ASP.NET MVC ModelState IsValid - Как исключить определенные свойства из проверки? - PullRequest
1 голос
/ 27 октября 2010

Я новичок в MVC. У меня есть модель:

    public class Usuarios
    {

     [Required(ErrorMessage = "**TxtOPID is required")]
        public string TxtOpID
        {
            get { return this.txt_opId; }
            set { this.txt_opId = value; }
        }

     [Required(ErrorMessage="**Password is required")]
        public string TxtPassword
        {
            get { return this.txt_password; }
            set { this.txt_password = value; }
        }

        [Required(ErrorMessage="**Email is required")]
        [RegularExpression("^[a-z0-9_\\+-]+(\\.[a-z0-9_\\+-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*\\.([a-z]{2,4})$",ErrorMessage="**Invalid email")]
        public string TxtEmail
        {
            get { return this.txt_email; }
            set { this.txt_email = value; }
        }
}

Это DataAnnotations и отлично работает, когда я пытаюсь проверить, все ли свойства действительны с помощью ModelState.IsValid Propertie.

Проблема в том, что я не хочу проверять ВСЕ свойства. Если я хочу проверить только свойства TxtOPID и TxtSenha, как в форме входа, где требуются только OPID и пароль.

Какмогу ли я исключить проверку свойства Email в конкретном действии в контроллере?

Я пытался:

  public ActionResult SignIn([Bind(Exclude="TxtEmail")]Usuarios usuario)
  {
    [...]
  }

Но это не работает, его всегда НЕВЕРНАЯ причина, TxtEmail не требуется дляэта конкретная форма.

Любые идеи?

1 Ответ

3 голосов
/ 27 октября 2010

Не кладите всю свою проверку в один класс.Создайте класс для Login и еще один для Contact и т. Д.

В основном каждая модель будет иметь аннотации данных для проверки этой модели ... даже если у вас есть 30 различных.Вы всегда можете создать базовый класс и поместить в него общие свойства и просто наследовать его.

В моей ситуации у меня есть форма входа в систему, и класс (с использованием DataAnnotations) проверяет «Имя пользователя» и «Пароль».У меня также есть форма «События», для которой требуется имя события, дата, время и т. Д. Поэтому у меня есть другой класс для проверки событий.

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