部分视图作为引导模式客户端验证不起作用
本文关键字:模式 客户端 验证 不起作用 视图 | 更新日期: 2023-09-27 18:25:10
我很难在部分视图中的模式弹出窗口中进行客户端验证。我使用按钮在主.cshtml
文件中调用它。
<div>
@Html.ActionLink("Add", "_MyPartial", "MyController", new { clientID = "0" }, new {@id = "btnAdd", })
</div>
部分视图非常好地加载了模式弹出窗口,我可以对其进行CRUD。它看起来像这样。
@using(Html.BeginForm("_MyPartial", "MyController", FormMethod.Post, new { id = "frmClient" }))
{
<div class="modal-content panel panel-info">
<div class="modal-header panel-heading">
<button type = "button" class="close" data-dismiss="modal">×</button>
</div>
<div class="panel-body bootstrap-padding-overide">
@Html.ValidationSummary(false, null, new { @id = "ValidationSummary", @class = "validationErrorBox" })
</div>
<div class="modal-body panel-body bootstrap-padding-overide">
<div>
@Html.LabelFor(m => m.selectName)
@Html.TextBoxFor(m => m.selectName, new { @class = "form-control" })
</div>
<div>
<input type = "submit" name="submitButton" value="Submit" class="btn btn-default" />
</div>
</div>
</div>
}
@section MyScripts
{
<script type="text/javascript">
$.validator.unobtrusive.parse("#frmClient form");
</script>
}
因此,我在布局页面中加载了所有可用的.js文件,并在ViewModel中添加了一个必填字段。
[Required(ErrorMessage = "Please Insert a Name")]
[Display(Name = "Persons Name")]
public string selectName { get; set; }
弹出容器在layout.cshtml中,还有处理模态。。。
所以当我提交它时,它只是发布到控制器操作。我想知道是否有人能告诉我这件事哪里出了问题。
*已解决*下面的海报给了我很大的帮助。由于缺乏理解,我做了很多抨击按钮的事。所以我想发表评论来解决我是从哪里得到这一点的。
我将以下内容放入html.BeginForm
helper方法内的部分页面中。所以在jQuery document.ready
功能之前。请纠正我,我会修改的。
@using (Html.BeginForm("_MyPartial", "MyControlloer", FormMethod.Post, new { id = "frmClient" }))
{
<script type="text/javascript">
$('form#frmClient').removeData("validator");
$('form#frmClient').removeData("unobtrusiveValidation");
$.validator.unobtrusive.parse($('form#frmClient'));
</script>
}
由于加载了部分视图,因此您必须重新添加下面提到的表单验证
$("form").removeData("validator");
$("form").removeData("unobtrusiveValidation");
$.validator.unobtrusive.parse($('form'));
在部分视图加载的处理程序或操作链接的处理程序中添加这些行。
我想你只是写错了选择器,这应该是:
$('form#frmClient').data('validator', null);
$.validator.unobtrusive.parse('form#frmClient');
我添加了第一行,以防您在表单上已经有了验证器,并且需要重新绑定它。
这一行对我来说效果很好!
$.validator.unobtrusive.parse("#formRegister");