Prøvede lige at oprette et nyt MVC4 projekt, for at se hvad Microsoft gør. Det må jo anses for at være bedst practice.
Hurtigt forklaret, så har de to modeller. En til registrering og en til login:
- public class LoginModel
- {
- [Required]
- [Display(Name = "User name")]
- public string UserName { get; set; }
-
- [Required]
- [DataType(DataType.Password)]
- [Display(Name = "Password")]
- public string Password { get; set; }
-
- [Display(Name = "Remember me?")]
- public bool RememberMe { get; set; }
- }
-
- public class RegisterModel
- {
- [Required]
- [Display(Name = "User name")]
- public string UserName { get; set; }
-
- [Required]
- [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
- [DataType(DataType.Password)]
- [Display(Name = "Password")]
- public string Password { get; set; }
-
- [DataType(DataType.Password)]
- [Display(Name = "Confirm password")]
- [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
- public string ConfirmPassword { get; set; }
- }
Giver dig ret i, at det kan virke ulogisk, men det er jo egentlig meget logisk, da det er tvivlsom at det er de samme felter der skal bruges når man registrerer sig og når man logger ind.
Du kan dog også vælge at disable validering for den enkelte action:
- [HttpPost]
- [AllowAnonymous]
- [ValidateInput(false)]
- public ActionResult Login(LoginModel model, string returnUrl)
- {
- }
Det disabler så vidt jeg ved ikke clientside validering. Det kan du gøre i dit View med:
- @model MyMvcApplication.Models.LoginModel
- @{
- ViewBag.Title = "Login";
- HtmlHelper.ClientValidationEnabled = false;
- }
Håber det hjalp dig lidt
Indlæg senest redigeret d. 30.04.2013 08:21 af Bruger #16372