2014-01-25 33 views
4

MVC项目,我包括validation必要引用具有:为什么我必须呈现我的Bundle两次?

@Scripts.Render("~/bundles/jqueryval") 

在我_Layout页。但是,例如在我的Register页面中,验证不起作用,除非我将此代码添加到我的Register页面。在这两种情况下,当我查看我的页面的来源时,我在那里看到了必要的参考。

<script src="/Scripts/jquery.unobtrusive-ajax.js"></script> 
<script src="/Scripts/jquery.validate.js"></script> 
<script src="/Scripts/jquery.validate.unobtrusive-custom-for-bootstrap.js"></script> 
<script src="/Scripts/jquery.validate.unobtrusive.js"></script> 

所以一切工作正常。它不添加引用两次,但我无法弄清楚有什么区别?

这里是我的捆绑代码:

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
        "~/Scripts/jquery.unobtrusive*", 
        "~/Scripts/jquery.validate*")); 

注:我渲染几个样式捆在我_Layout,它不会引起任何问题。

+0

您的_Layout页面中是否有“@RenderSection(”scripts“,required:false)”? – Nathan

+0

@Nathan,不,我想是的,但我删除它。 –

+0

没有这个“@ Scripts.Render(”〜/ bundles/jqueryval“)”将不起作用 – Nathan

回答

0

当我尝试在部分视图中验证时,我遇到了同样的问题。

从不同的岗位我的解决办法弄成这个样子:

在我环绕我的编辑字段与 <div id="#formDiv> 并添加脚本

<script> 
    $(document).ready(function() { 
     $.validator.unobtrusive.addValidation("#formDiv"); 
    }); 
</script> 

和custom.js的局部视图

//Validation on partial views 
    $(function() { 
     $.validator.unobtrusive.addValidation = function(selector) { 
      //get the relevant form 
      var form = $(selector); 
      // delete validator in case someone called form.validate() 
      $(form).removeData("validator"); 
      $.validator.unobtrusive.parse(form); 
     }; 
    });