J'ai des problèmes avec MVC RC2 où, lors de l'échec de la validation, le champ échoué lève une exception NullReferenceException lorsque la vue est renvoyée à l'utilisateur.ASP.Net MVC RC2 ValidationMessage et conflit de champ de formulaire?
Une solution à court terme a été trouvée: qui consistait à renommer le Html.ValidationMessage pour être différent du champ de formulaire cible. Cela marche! MAIS maintenant la surbrillance automatique est déconnectée du champ de saisie. (Hors de la boîte behavour est de changer la classe CSS champ cible qui le rend hors concours)
Alors ...
Quel est le problème réel avec mon code? ET Pourquoi ne permet-il pas mes champs ValidationMessage et Form partagent les mêmes noms?
Le code est de lancer NullReferenceException lorsque le code suivant est exécuté:
Afficher le code
<% 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.")%>
code contrôleur
[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();
}
Je peux obtenir le code de travail si j'omets ce qui suit:
ModelState.AddModelError("Terms", "Please agree to the Terms");
Mais avec ceci, la case à cocher lève l'exception de référence nulle.
Des idées?
Le Html.ValidationMessage doit-il avoir un nom différent du contrôle auquel il est associé? –
J'ai utilisé le contrôleur de compte et le code de vue comme référence. Ici, ils ont nommé l'objet ValidationMessage le même que le champ associé.Je pense que cela pourrait être un bug avec la case à cocher –
Je pense que cela soulève la question plus importante de savoir pourquoi le code exemple MVC a le contrôleur en charge de la validation. Si le modèle exige que les termes == Vrai, cela devrait être dans le modèle. –