MVC表单验证后破坏javascript
对我拥有的表单的验证打破了我用于复选框的JavaScript 表格如下:MVC表单验证后破坏javascript,javascript,jquery,asp.net-mvc,forms,validation,Javascript,Jquery,Asp.net Mvc,Forms,Validation,对我拥有的表单的验证打破了我用于复选框的JavaScript 表格如下: @using (Html.BeginForm("HomeEquityFinal", "Home", FormMethod.Post)) { <div class="row"> <div class="col-md-offset-4"> <div class="checkbox disabled"> <label
@using (Html.BeginForm("HomeEquityFinal", "Home", FormMethod.Post))
{
<div class="row">
<div class="col-md-offset-4">
<div class="checkbox disabled">
<label>
@Html.CheckBoxFor(m => m.Terms, new { id = "termsCheck", disabled = "disabled" }) I agree to the <a data-toggle="modal" data-target="#termsModal">Terms and Conditions</a><br />
@Html.ValidationMessageFor(x => x.Terms)<br/>
@Html.CheckBoxFor(m => m.Terms1, new { id = "termsCheck1", disabled = "disabled" }) I agree to the <a data-toggle="modal" data-target="#termsModal1">Terms and Conditions</a><br />
@Html.ValidationMessageFor(x => x.Terms1)
</label>
</div>
</div>
</div>
}
我的模型验证:
[Range(typeof(bool), "true", "true", ErrorMessage = "Please agree to the terms and conditions.")]
public bool Terms { get; set; }
[Range(typeof(bool), "true", "true", ErrorMessage = "Please agree to the terms and conditions.")]
public bool Terms1 { get; set; }
我相信的位置!控制器中的modelstate.isvalid导致问题。表单在会话中完成所有操作
这是我控制器的一部分
var notes = model.HomeEquityDetails.Notes;
model = Session["HomeEquityConfirmation"] as HomeEquityConfirmationViewModel;
if (!ModelState.IsValid)
{
model = Session["HomeEquityConfirmation"] as HomeEquityConfirmationViewModel;
return View(model);
}
当我提交表单及其验证后,我再也不能单击我的确认按钮,让复选框选中并转到下一页-它只是不断发回,说字段是必需的
在代码中,它有一个标记为false的隐藏字段。如果我在开发人员工具中将其更改为true,我可以继续
主要问题似乎是发回时JavaScript被破坏
如果有任何帮助,我们将不胜感激。您是否可以使用
[必需的]
来确保复选框只有在选中时才通过验证?为什么您的bool上有[范围]
属性?为什么禁用该复选框(它将始终发回false
-$(“#termsCheck”)。attr('checked','checked');
不会改变这一点)?该复选框被禁用,因为用户必须阅读条款并单击“接受”才能选中该复选框。如果没有validatoin,当我单击确认按钮时,它会勾选对应的框。我使用范围来进行验证。这是我能想出的唯一办法,让验证在计算机上进行checkbox@TheDizzle,禁用的复选框不会回发(因此回发的值始终为false-取自CheckBoxFor()
)生成的相应隐藏输入),这意味着您的模型将始终无效。[Range]
属性有点毫无意义,因为它永远不会提供客户端验证。但是,if(!ModelState.IsValid)
块中的代码表明,与此相比,您还有很多问题。
var notes = model.HomeEquityDetails.Notes;
model = Session["HomeEquityConfirmation"] as HomeEquityConfirmationViewModel;
if (!ModelState.IsValid)
{
model = Session["HomeEquityConfirmation"] as HomeEquityConfirmationViewModel;
return View(model);
}