我只是想在 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);
}