私が今抱えている問題は、ASP.NET MVCが要求オブジェクト(この場合はユーザー)を検証することです。
public ActionResult Edit(User user)
私がやりたいのは、ユーザーのパスワードが空白のままになっている場合は、パスワードを更新せず、古いパスワードを使用するだけですが、設定されている場合は更新します。
問題は、フレームワークがユーザーにパスワードがないと文句を言うことです。ユーザーオブジェクトを更新しても、文句を言います。
public ActionResult Edit(User user)
{
user.Password = "Something";
// more code...
}
どうやらそれはリクエストオブジェクトの検証を行います、この場合検証をスキップする方法はありますか、または少なくともユーザーオブジェクトの変更が完了するまでそれを遅らせる方法はありますか?
これは完全なメソッドコードです
[HttpPost]
public ActionResult Edit(User user)
{
if (string.IsNullOrEmpty(user.Password))
{
var oldUser = db.Users.Single(u => u.Id == user.Id);
user.Password = oldUser.Password;
}
try
{
db.SaveChanges();
return RedirectToAction("Index");
}
catch
{
return View(user);
}
}