MVC RC で簡単な検証を行おうとしているところですが、エラーが発生しています。この質問のために、私はUpdateModel を使用していません。
形式のコードは次のとおりです。
<%= Html.TextBox("UserId")%>
<%= Html.ValidationMessage("UserId") %>
コントローラーに次の行を追加すると、TextBox で NullReferenceException が発生します。
ModelState.AddModelError("UserId", "*");
これを修正するために、次の行も追加しました。
ModelState.SetModelValue("UserId", ValueProvider["UserId"]);
値を再バインドする必要があるのはなぜですか? エラーを追加する場合にのみこれを行う必要がありますが、これを行う必要はないようです。何か間違ったことをしているように感じたり、バインディングに慣れていないだけです。
これを見たのは私だけではないようです。リクエストごとに、コントローラーのコードは次のとおりです。
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(FormCollection collection)
{
AppUser newUser = new AppUser();
try
{
newUser.UserId = collection["UserId"];
AppUserDAL.AddUser(newUser);
return RedirectToAction("Index");
}
catch (Exception ex)
{
ViewData["ReturnMessage"] = ex.Message;
ModelState.AddModelError("UserId", "*");
ModelState.SetModelValue("UserId", ValueProvider["UserId"]);
return View(newUser);
}