ASP.NET MVC 验证在引导模式上不起作用
ASP.NET MVC validation not working on bootstrap modal
我无法让引导模式和 asp.net mvc 验证开始一起工作。我有一个复杂的表单,在引导模式中显示了一些验证。不幸的是,当我点击提交按钮时,验证根本不起作用。
表单使用标准 asp.net mvc 验证。下面是它的一部分,只是为了了解它是如何构建的:
@using (Html.BuildForm().AddClass("form-horizontal").Id("contact-add-popup").EncType(FormEncType.MultipartData).Begin()) {
@Html.AntiForgeryToken()
@Html.Partial("_Alerts")
<div class="control-group">
<div class="control-group company-field">
@Html.BuildLabelFor(m => m.Name).AddClass("control-label")
<div class="controls">
@Html.BuildTextBoxFor(m => m.Name).AddClass("input-xxlarge")
@Html.ValidationMessageFor(m => m.Name)
</div>
</div>
(...)
这是我的模态:
<div id="createContactModal" class="modal hide fade modal-contact" tabindex="-1" role="dialog" aria-labelledby="createContactModalLabel" aria-hidden="true" data-backdrop="static">
<div class="modal-header">
<h4 class="modal-label" id="createContactModalLabel">Add contact</h4>
</div>
<div class="modal-body">
@Html.Partial("_CreateContact", new ContactCreateModel())
</div>
<div class="modal-footer">
<a href="javascript:$('#contact-add-popup').submit();" class="btn btn-primary">Zapisz</a>
<button class="btn" data-dismiss="modal" aria-hidden="true">Zamknij</button>
</div>
还有一些我希望让验证工作的 JavaScript:
$('#createContactModal').on('shown', function () {
$("#contact-add-popup").removeData("validator");
$("#contact-add-popup").removeData("unobtrusiveValidation");
$.validator.unobtrusive.parse("#contact-add-popup");
});
$('#contact-add-popup').on('submit', function(e){
e.preventDefault();
$.validator.unobtrusive.parse($("#contact-add-popup"));
if ($('#contact-add-popup').valid()){
alert('AJAX');
}
});
如果 ($('#contact-add-popup').valid()) 则始终返回 true。如何使模态和验证正常工作?
你应该试试这种方式:
var form = $("#contact-add-popup")
.removeData("validator")
.removeData("unobtrusiveValidation");
$.validator.unobtrusive.parse(form);
堆栈溢出:不显眼的验证不适用于动态内容
经过一些研究,我发现javascript验证脚本文件丢失了 - 所以客户端验证根本不起作用。包含这些文件后,一切正常。
感谢您的所有回答。
在基本视图中添加此内容,加载模式并启用客户端验证。
@section scripts {
@{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); }
@* The normal bootstrap behavior is to only grab the content
for the modal once, if you need to pull in different partial
views then the data on the modal will have to be cleared. *@
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script>
<script type="text/javascript">
$(function () {
$('#modal-container').on('show.bs.modal', function (event) {
var button = $(event.relatedTarget); // Button that triggered the modal
var url = button.attr("href");
var modal = $(this);
//enable client side validation after page is loaded
modal.find('.modal-content').load(url, function () {
$('#registration_form').removeData("validator");
$('#registration_form').removeData("unobtrusiveValidation");
$.validator.unobtrusive.parse('#registration_form');
});
});
});
</script>
}
相关文章:
- Ajax模式下的Jquery Select2 V4在IE9中不起作用
- Angular$scope在模式窗口内不起作用
- jQuery日期选择器在Codeigniter和Bootsrap模式表单中不起作用
- 猫鼬混合模式不起作用
- 火狐浏览器 iframe 设计模式不起作用
- 简单的模式不起作用
- JavaScript 模块模式不起作用
- 匹配模式不起作用
- 我的正则表达式模式不起作用
- 在页面加载时启动引导模式不起作用
- 电话差距 - 将 css 更改为离线模式不起作用
- Ionic javascript data-dismiss引导模式不起作用
- 将html附加到引导模式不起作用
- 调用show/hide时引导模式不起作用
- 实体化css模式不起作用
- 为什么正则表达式“贪婪”模式不起作用
- 谷歌地图多地图引导模式不起作用
- Js搜索模式不起作用
- 引导关闭模式不起作用
- 滑块中心模式不起作用