Проверка состояния модели в asp.net MVC 2.0 - PullRequest
0 голосов
/ 29 октября 2010

Я реализовал настраиваемую страницу регистрации, расширив членство провайдера с помощью профиля Provider. Я успешно зарегистрировал пользователя. Теперь я хочу проверить поля страницы регистрации. Встроенная страница регистрации имеет встроенные сообщения проверки.Но в моем коде я не передаю модель действию регистрации, вместо этого я передаю свойства. Так что, если я использую If (ModelState.IsValid), это всегда дает истину, даже если я не заполняю поля. Но после того, как он выдает исключение, ноне отображать сообщения об ошибках на странице. Пожалуйста, скажите мне, что я должен сделать. Как я получаю свои сообщения проверки.

Я видел класс Account Models в нем для регистра. Существуют встроенные условия проверки модели. Так что ятакже пишу так для моих свойств.

Заранее спасибо,

public ActionResult UserRegistration (строка FirstName, строка LastName, строка LoginId, строка EmailId, строка Password, строка ConfirmPassword) {

        //int id= int.Parse(ViewData["id"] as string);


            string firstName = FirstName;
            string lastName = LastName;
            string userName = LoginId;
            string email = EmailId;
            string password = Password;
            string confirmPassword = ConfirmPassword;
            if (ModelState.IsValid)
            {
            MembershipCreateStatus status = MembershipService.CreateUser(userName, password, email);
            //MembershipCreateStatus user = Membership.CreateUser(userName, password, email);
            Roles.AddUserToRole(userName, "User");
            UserProfile.NewUser.Initialize(userName, true);
            UserProfile.NewUser.FirstName = firstName;
            UserProfile.NewUser.LastName = lastName;
            if (status == MembershipCreateStatus.Success)
            {
                UserProfile.NewUser.Save();

                FormsService.SignIn(userName, false /* createPersistentCookie */);
                return RedirectToAction("CreateAccountConfirmation");
            }
            else
            {
                ModelState.AddModelError("", AccountValidation.ErrorCodeToString(status));
            }

1 Ответ

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

ModelState действителен, поскольку недопустимо иметь пустое поле.

Вы должны проверить каждое поле вручную в своем действии (if (FirstName == null) ModelState.AddModelError("blabla");)

или (и это ябудет предлагать) вы создаете ViewModel и предоставляете ему атрибуты проверки

public class RegistrationModel
{
        [Required]
        public string FirstName { get; set; }
        [Required]
        public string LastName { get; set; }
        [Required]
        public string LoginId { get; set; }
        [Required]
        public string EmailId { get; set; }
        [Required]
        public string Password { get; set; }
        [Required]
        public string ConfirmPassword { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...