Сообщения проверки не отображаются при использовании атрибутов с тем же именем в модели? - PullRequest
1 голос
/ 19 мая 2011

У меня есть две модели, то есть Войти и зарегистрироваться:

Логин Модель

public class LoginModel
    {
        [Required(ErrorMessage = "Email is required")]
        [RegularExpression("^[a-z0-9_\\+-]+(\\.[a-z0-9_\\+-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*\\.([a-z]{2,4})$", ErrorMessage = "Not a valid email")]
        [DataType(DataType.EmailAddress)]
        [DisplayName("Email")]
        [StringLength(150, ErrorMessage = "Must be less than 150 characters")]
        public string Email { get; set; }

        [Required(ErrorMessage = "Password is required")]
        [DataType(DataType.Password)]
        [DisplayName("Password")]
        [StringLength(30, ErrorMessage = "Must be less than 30 characters")]
        public string LoginPassword { get; set; }

        [DisplayName("Remember me")]
        public bool Remember { get; set; }

    }

Регистрация модели:

   public class RegisterModel
    {
        [Required(ErrorMessage = "Email is required")]
        [RegularExpression("^[a-z0-9_\\+-]+(\\.[a-z0-9_\\+-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*\\.([a-z]{2,4})$", ErrorMessage = "Not a valid email")]
        [DataType(DataType.EmailAddress)]
        [DisplayName("Email")]
        [StringLength(150, ErrorMessage = "Must be less than 150 characters")]
        public string Email { get; set; }

        [Required(ErrorMessage = "Full Name is required")]
        [DisplayName("Full Name")]
        [StringLength(50, ErrorMessage = "Must be less than 50 characters")]
        public string FullName { get; set; }

        [Required(ErrorMessage = "Password is required")]
        [DataType(DataType.Password)]
        [DisplayName("Password")]
        [StringLength(30, ErrorMessage = "Must be less than 30 characters")]
        public string RegisterPassword { get; set; }

        [Required(ErrorMessage = "Confirm Password is required")]
        [DataType(DataType.Password)]
        [DisplayName("Confirm Password")]
        [StringLength(30, ErrorMessage = "Must be less than 30 characters")]
        public string ConfirmPassword { get; set; }

        [Required(ErrorMessage = "Please read and agree the terms and condition.")]
        [DisplayName("I agree to the terms and conditions")]
        public bool AgreeTerms { get; set; }

    }

И они оба вызываются на домашней странице с помощью отдельных модальных всплывающих окон -> так скажем, если пользователь регистрируется сам (и при регистрации он нажимает ввод без ввода адреса электронной почты и отображается сообщение проверки). После успешной регистрации пользователь пытается войти в систему (и он снова нажимает клавишу ввода, не вводя электронную почту), но на этот раз сообщение проверки не отображается.

Насколько мне известно, причина не показывать сводку проверки состоит в том, что сообщение проверки появляется в модальном регистре, который в данный момент не виден, и потому что обе модели используют атрибут поля email (названный: Email) .

Я могу достичь желаемого поведения, используя другое имя для поля электронной почты, но есть ли способ без этого ???

И в дополнение к этому я могу наследовать от модели Register и использовать ее также для целей входа в систему, делая при этом, что будет результатом моего вышеописанного сценария?

1 Ответ

1 голос
/ 19 мая 2011

Вам нужно изменить шаблоны редактора, чтобы они включали префикс или что-то, делающее их уникальными.Вот ответ, который предоставляет некоторые методы расширения, которые, я думаю, будут работать TextBox для рендеринга в HTML с префиксом атрибута ID .

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