Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MVC表单验证后破坏javascript_Javascript_Jquery_Asp.net Mvc_Forms_Validation - Fatal编程技术网

MVC表单验证后破坏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

对我拥有的表单的验证打破了我用于复选框的JavaScript

表格如下:

@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);
        }