コントローラーに自動生成された Create アクションがあります。少し変更しました。ModelState.IsValid() を呼び出す前に、送信されたモデルを変更する必要があります。
しかし、 IsValid() はまだ失敗したと言っています。これは、受け取ったパラメーターから外れて、行った変更を無視するためだと思いますか? 変更後に検証するにはどうすればよいですか?
ありがとう
コントローラーコード:
[HttpPost]
[CaptchaValidator]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Register(User user, bool captchaValid)
{
user.prepareUserForCreation();
if (ModelState.IsValid && captchaValid)
{
db.Users.Add(user);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewData["captchaValidationMessage"] = captchaValid ? "" : "Your words didn't match, please try again";
return View(user);
}
準備方法:
public void prepareUserForCreation()
{
this.DateCreated = DateTime.Now;
this.LastSeen = DateTime.Now; //TODO remove this
this.IsActivated = true; //TODO remove this
SecurityHelper.HashPassword(this);
}
基本的に、パスワードは null です。