Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.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
Jquery 万无一失的要求真的不适用于MVC5?_Jquery_Asp.net Mvc_Jquery Validate_Asp.net Mvc 5_Foolproof Validation - Fatal编程技术网

Jquery 万无一失的要求真的不适用于MVC5?

Jquery 万无一失的要求真的不适用于MVC5?,jquery,asp.net-mvc,jquery-validate,asp.net-mvc-5,foolproof-validation,Jquery,Asp.net Mvc,Jquery Validate,Asp.net Mvc 5,Foolproof Validation,我正在尝试条件必填字段。如果用户选中了ContactByPhone复选框,我将显示ContactPhoneNumber字段,它应该是必填字段。如果用户未选择ContactByPhone,则ContactPhoneNumber不可见且不需要 客户端未显示验证。提交表单后,ModelState.IsValid对此属性为false 如何处理?我想我引用了页面上的所有脚本。对于这种情况,我们有其他的解决办法吗 模型 Index.cshtml @Label(“您希望如何联系?”,新建{@class=“c

我正在尝试条件必填字段。如果用户选中了
ContactByPhone
复选框,我将显示
ContactPhoneNumber
字段,它应该是必填字段。如果用户未选择
ContactByPhone
,则
ContactPhoneNumber
不可见且不需要

客户端未显示验证。提交表单后,
ModelState.IsValid
对此属性为false

如何处理?我想我引用了页面上的所有脚本。对于这种情况,我们有其他的解决办法吗

模型 Index.cshtml

@Label(“您希望如何联系?”,新建{@class=“control Label”})
@CheckBoxFor(model=>model.ContactByPhone,新{@style=“margin top:8px”})
@Html.LabelFor(model=>model.ContactPhoneNumber,新的{@class=“control label nobold”})*
@Html.TextBoxFor(m=>m.ContactPhoneNumber,新的{@class=“form control”})
@Html.ValidationMessageFor(m=>m.ContactPhoneNumber,”,新的{@style=“color:Red”})
控制器

生成的HTML
我猜您缺少了
MvcFoolproofJQueryValidation.min.js
MvcFoolproofValidation.min.js
js文件。见下例:

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()

    <div class="form-horizontal">

        @Html.ValidationSummary(true)

        <div class="form-group">
            <div class="col-sm-5 text-left">
                @Html.Label("How do you want to be contacted?", new { @class = "control-label" })
            </div>
            <div class="col-sm-1">
                @Html.CheckBoxFor(model => model.ContactByPhone, new { @id = "myCheckBox", @style = "margin-top: 8px" })
                @Html.ValidationMessageFor(model => model.ContactByPhone)
            </div>
        </div>
        <div class="form-group" id="divContactPhone">
            <div class="col-sm-5">
                @Html.LabelFor(model => model.ContactPhoneNumber, new { @class = "control-label-nobold" })<span class="red">*</span>
            </div>
            <div class="col-sm-4">
                @Html.TextBoxFor(m => m.ContactPhoneNumber, new { @class = "form-control" })
                @Html.ValidationMessageFor(m => m.ContactPhoneNumber, "", new { @style = "color:Red" })
            </div>
        </div>

        <div class="form-group">
            <div class="col-sm-5 text-left">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
    </div>
}

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
    <script src="~/Scripts/mvcfoolproof.unobtrusive.min.js"></script>
    <script src="~/Scripts/MvcFoolproofJQueryValidation.min.js"></script>
    <script src="~/Scripts/MvcFoolproofValidation.min.js"></script>
    <script>
        $("#divContactPhone").hide();
        $("input[type=checkbox]").on("click", function () {
            $("#divContactPhone").toggle('show');
        });
    </script>
}
@使用(Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
@Label(“您希望如何联系?”,新建{@class=“control Label”})
@Html.CheckBoxFor(model=>model.ContactByPhone,新的{@id=“myCheckBox”,@style=“margin top:8px”})
@Html.ValidationMessageFor(model=>model.ContactByPhone)
@Html.LabelFor(model=>model.ContactPhoneNumber,新的{@class=“control label nobold”})*
@Html.TextBoxFor(m=>m.ContactPhoneNumber,新的{@class=“form control”})
@Html.ValidationMessageFor(m=>m.ContactPhoneNumber,”,新的{@style=“color:Red”})
}
@节脚本{
@Scripts.Render(“~/bundles/jqueryval”)
$(“#divContactPhone”).hide();
$(“输入[type=checkbox]”)。在(“单击”上,函数(){
$(“#divContactPhone”).toggle('show');
});
}

注意:我使用jquery来控制隐藏的div元素。

您能分享这个项目吗?添加这些库后,我得到了jquery 1.10.2中未定义的
uncaught referenceerror sys
。您的意思是要将项目上载到某个地方吗?您需要使用NuGet下载“MVC万无一失验证”和“MVC扩展.万无一失”。你可能错过了其中一个,谢谢你。这次我得到了未捕获的类型错误:无法读取jquery中未定义的属性“ValidatorRegistry”。请在
http://i.stack.imgur.com/vBoJ6.png
。我在点击链接时在fancybox上加载了这个复选框。因此,如果我添加此项,fancybox不会全部加载。值得注意的是,似乎指示您只加载
mvcfoolproof.unobtrusive.js
文件,因此此建议可能不正确。您是否设法解决了此问题?我也犯了同样的错误。
<script src="~/Scripts/jquery.validate.min.js"></script>
   <script src="~/Scripts/jquery.mask.min.js"></script>
   <script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
   <script src="~/Scripts/Index.js"></script>
   <script src="~/Scripts/jquery.notifyBar.js"></script>
   <script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>
   <script src="~/Scripts/mvcfoolproof.unobtrusive.min.js"></script>
   <div class="form-group">
        <div class="col-sm-5 text-left">
           @Html.Label("How do you want to be contacted?", new { @class = "control-label" })
        </div>
        <div class="col-sm-1">
          @Html.CheckBoxFor(model => model.ContactByPhone, new { @style = "margin-top: 8px"})
        </div>
    </div>
    <div class="form-group" id="divContactPhone" hidden>
        <div class="col-sm-5">
           @Html.LabelFor(model => model.ContactPhoneNumber, new { @class = "control-label-nobold" })<span class="red">*</span>
         </div>
         <div class="col-sm-4">
            @Html.TextBoxFor(m => m.ContactPhoneNumber, new { @class = "form-control" }) 
            @Html.ValidationMessageFor(m => m.ContactPhoneNumber, "", new { @style = "color:Red" })
          </div>
    </div>
<div class="col-sm-4">
     <input class="form-control valid" data-val="true" data-val-requiredif="Phone number is required" data-val-requiredif-dependentproperty="ContactByPhone" data-val-requiredif-dependentvalue="True" data-val-requiredif-operator="EqualTo" id="ContactPhoneNumber" name="ContactPhoneNumber" type="text" value="" maxlength="15" autocomplete="off"> 
     <span class="field-validation-valid" data-valmsg-for="ContactPhoneNumber" data-valmsg-replace="true" style="color:Red"></span>
</div>
@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()

    <div class="form-horizontal">

        @Html.ValidationSummary(true)

        <div class="form-group">
            <div class="col-sm-5 text-left">
                @Html.Label("How do you want to be contacted?", new { @class = "control-label" })
            </div>
            <div class="col-sm-1">
                @Html.CheckBoxFor(model => model.ContactByPhone, new { @id = "myCheckBox", @style = "margin-top: 8px" })
                @Html.ValidationMessageFor(model => model.ContactByPhone)
            </div>
        </div>
        <div class="form-group" id="divContactPhone">
            <div class="col-sm-5">
                @Html.LabelFor(model => model.ContactPhoneNumber, new { @class = "control-label-nobold" })<span class="red">*</span>
            </div>
            <div class="col-sm-4">
                @Html.TextBoxFor(m => m.ContactPhoneNumber, new { @class = "form-control" })
                @Html.ValidationMessageFor(m => m.ContactPhoneNumber, "", new { @style = "color:Red" })
            </div>
        </div>

        <div class="form-group">
            <div class="col-sm-5 text-left">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
    </div>
}

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
    <script src="~/Scripts/mvcfoolproof.unobtrusive.min.js"></script>
    <script src="~/Scripts/MvcFoolproofJQueryValidation.min.js"></script>
    <script src="~/Scripts/MvcFoolproofValidation.min.js"></script>
    <script>
        $("#divContactPhone").hide();
        $("input[type=checkbox]").on("click", function () {
            $("#divContactPhone").toggle('show');
        });
    </script>
}