gpt4 book ai didi

asp.net-mvc - ASP.Net MVC RC2 ValidationMessage 和表单字段冲突?

转载 作者:行者123 更新时间:2023-12-04 07:09:17 24 4
gpt4 key购买 nike

我在使用 MVC RC2 时遇到问题,在验证失败时,失败的字段将在 View 传递回用户时抛出 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.")%>

Controller 代码
[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 引用异常。

有任何想法吗?

最佳答案

尝试这个:

else 
{
ModelState.AddModelError("Terms", "Please agree to the Terms");
ModelState.SetModelValue("Terms", form.ToValueProvider()["Terms"]);
ModelState.AddModelError("_FORM", "Terms not checked");
}

如果这不起作用,那么请发布异常的完整堆栈。

关于asp.net-mvc - ASP.Net MVC RC2 ValidationMessage 和表单字段冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/633365/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com