Проверка состояния модели в asp.net MVC 2.0
Я реализовал настраиваемую страницу регистрации, расширив членство провайдера с помощью профиля Provider. Я успешно зарегистрировал пользователя. Теперь я хочу проверить поля страницы регистрации. Встроенная страница регистрации имеет встроенные сообщения проверки. Но в моем коде я не передаю модель действию регистрации, вместо этого я передаю свойства. Так что, если я использую If(ModelState.IsValid), это всегда дает значение true, даже если я не заполняю поля. Но после того, как оно выдает исключение, но не отображать сообщения об ошибках на странице. Пожалуйста, скажите мне, что я должен сделать. Как я получаю свои сообщения проверки.
Я видел класс Account Models в том, что для регистров есть Model, встроенные в условия валидации. Так что я так же пишу для своих свойств.
Заранее спасибо,
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 ответ
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; }
}