2014-01-25 58 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); 
     }; 
    });