У меня проблемы с MVC RC2, когда при сбое валидации поле с ошибкой выдает исключение NullReferenceException при возврате представления пользователю.
Было найдено краткосрочное решение: переименовать сообщение Html.ValidationMessage, чтобы оно отличалось от поля формы назначения. Это работает!
НО теперь автоматическое выделение отключено от поля ввода. (Поведение «из коробки» - это изменение класса CSS целевого поля, что делает его выдающимся)
Итак ...
В чем проблема с моим кодом?
А ТАКЖЕ
Почему это не позволяет моим полям ValidationMessage и Form иметь одинаковые имена?
Код генерирует исключение NullReferenceException при выполнении следующего кода:
Просмотр кода
<% using (Html.BeginForm()) { %>
<fieldset>
<h5>Terms and Conditions</h5>
<p>
<%= Html.CheckBox("Terms", false)%>
<%= Html.ValidationMessage("Terms")%>
I agree to the <a href="/signup/terms">Terms & Conditions.</a>
</p>
</fieldset>
<input class="signup_button" type="submit" title="Sign Up" value="" />
<% } %>
<%= Html.ValidationSummary("Sign up wasn't successful.")%>
Код контроллера
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Index()
{
return View();
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(FormCollection form)
{
bool Terms = form["Terms"].ToString() == "true,false" ? true : false;
if (Terms)
{
return RedirectToAction("Success", "Signup");
}
else
{
ModelState.AddModelError("Terms", "Please agree to the Terms");
ModelState.AddModelError("_FORM", "Terms not checked");
}
return View();
}
Я могу заставить код работать, если я опущу следующее:
ModelState.AddModelError("Terms", "Please agree to the Terms");
Но при этом флажок выдает исключительную ссылку Null.
Есть идеи?