Просто пытаюсь изучать MVC2 / .net 4.0 одновременно. Я просто использую универсальный шаблон, который поставляется с VS при запуске проекта «MVC 2 Web» (т. Е. Для вас настроены контроллер учетных записей и домашние контроллеры)
Итак, мой вопрос заключается в том, что представление снова строго типизировано моделью. Модель выглядит так:
[PropertiesMustMatch("Password", "ConfirmPassword", ErrorMessage = "The password and confirmation password do not match.")]
public class RegisterModel {
[Required]
[DisplayName("User name")]
public string UserName { get; set; }
[Required]
[DataType(DataType.EmailAddress)]
[DisplayName("Email address")]
public string Email { get; set; }
[Required]
[ValidatePasswordLength]
[DataType(DataType.Password)]
[DisplayName("Password")]
public string Password { get; set; }
[Required]
[DataType(DataType.Password)]
[DisplayName("Confirm password")]
public string ConfirmPassword { get; set; }
[Required]
[DisplayName("School")]
public string School { get; set; }
}
тогда я полагаю, что я нажимаю "зарегистрироваться" на моей веб-странице, и на моем контроллере выполняется следующее:
[HttpPost]
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid)
{
// Attempt to register the user
MembershipCreateStatus createStatus = MembershipService.CreateUser(model.UserName, model.Password, model.Email);
if (createStatus == MembershipCreateStatus.Success)
{
FormsService.SignIn(model.UserName, false /* createPersistentCookie */);
return RedirectToAction("Index", "Home");
}
else
{
ModelState.AddModelError("", AccountValidation.ErrorCodeToString(createStatus));
}
}
// If we got this far, something failed, redisplay form
ViewData["PasswordLength"] = MembershipService.MinPasswordLength;
return View(model);
}
так пару вопросов.
1) Классы, которые [] выше имени метода ... выполняются ли они (я не знаю, какой термин здесь использовать) в первую очередь? Например, модель имеет [ValidatePasswordLength]
над своим свойством. Означает ли это, что при отправке пароля, который не подтвержден, он даже не попал в контроллер? Могу ли я также поместить эту логику в контроллер?
2) Откуда взялся ModelState
класс?
Я просто хочу узнать в блок-схеме, как все связано в MVC. Кажется, это большой круг, и отправной точки нет.