2014-02-05 55 views
0

我一直在試圖獲得MVC 5遠程驗證工作在我的小項目。爲了獲得它的基礎知識,我一直在閱讀關於捆綁的知識。我創建了一個包我jqueryval捆綁,像這樣:BundleConfig.cs不生成腳本引用

 bundles.Add(new ScriptBundle("~/bundles/jqueryval") 
      .Include("~/Scripts/jquery-{version}.js") 
      .Include("~/Scripts/jquery.validate.js") 
      .Include("~/Scripts/jquery.validate.unobstrusive.js") 
      ); 

然而,當我發佈頁面,查看源代碼,所呈現的只是腳本,如下:

<script src="/myApp/Scripts/jquery-2.1.0.js"></script> 
    <script src="/myApp/Scripts/jquery.validate.js"></script> 

通知, query.validate.unobstrusive.js丟失。現在,我知道這是在讓我的驗證工作,因爲當我手動添加query.validate.unobstrusive.js到我的視圖頁面,像這樣的關鍵部件:

@section Scripts { 
    @Scripts.Render("~/bundles/jquery") 
    @Scripts.Render("~/bundles/jqueryval") 
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript" /> 
    } 

一切只是工作。

所以,現在我仍然想知道,有沒有什麼我做錯了捆綁?爲什麼這個腳本不顯示?

+2

您錯過了'.min',就像在您的第二個源代碼中看到的一樣。 (我猜你剛在包中有一個不好的路徑) – tymeJV

+0

其實,我剛剛在我的硬編碼版本中有'.min',因爲我在開發環境中工作。 MVC會爲您選擇正確的文件。所以,我的解決方案包含'jquery.validate.unobstrusive'的'.js'和'.min.js'文件。根據您發佈的配置,MVC會選擇正確的配置。所以你只需要'.include(「〜/ Scripts/myFile.js」)',只要你指定的目錄中存在'.js'和'.js.min',就會選擇合適的文件,這是我做的。 – Bensonius

+0

@tymeJV,雖然它不是'min'失蹤,但你讓我更仔細地看看我的代碼。原來我拼寫錯誤「不顯眼」! DOH!我糾正了拼寫和捆綁工作。第二套眼睛總是有幫助的。 – Bensonius

回答

0

你有沒有在你的web.config中啓用它?

<appSettings> 
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
</appSettings> 

您不需要將其包含在BundleConfig.cs中。只要確保在您的scripts文件夾中有jquery.validate.unobstrusive.jsjquery.validate.unobstrusive.min.js