部分视图作为引导模式客户端验证不起作用

本文关键字:模式 客户端 验证 不起作用 视图 | 更新日期: 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">&times;</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");