Я просто пытаюсь выполнить простую проверку в MVC RC и получаю сообщение об ошибке. Для целей этого вопроса я не использую UpdateModel .
Вот код в форме:
<%= Html.TextBox("UserId")%>
<%= Html.ValidationMessage("UserId") %>
Если я добавлю следующую строку в контроллер, я получу исключение NullReferenceException для TextBox:
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);
}