javascript
  • razor
  • include
  • 2016-01-18 32 views 1 likes 
    1

    我有具有類似的結構類似下面的2個剃刀.cshtml文件:正確的方式來移動多個.js包含到一個包括?

    <script type="text/javascript" src='@Url.Content("~/Scripts/jqwidgets/jqxcore.js")'></script> 
    <script type="text/javascript" src='@Url.Content("~/Scripts/jqwidgets/jqxdata.js")'></script> 
    <script type="text/javascript" src='@Url.Content("~/Scripts/jqwidgets/jqxbuttons.js")'></script> 
    ... 
    
    <More header stuff (different in both files)> 
    
    <script language="javascript" type="text/javascript"> 
        function commonFunctionForJqWidgets() { 
         ... 
         callSomethingFromJqWidgetsLibrary(); 
         ... 
        } 
    </script> 
    

    我寫常用代碼,這2個文件,並希望把通用的代碼在另一個.js文件(或.cshtml )文件,而不是在兩個地方複製它。然而,通用代碼需要包含一些jqwidgets包含,因爲它調用了庫函數。

    什麼是正確的方法來處理這個問題?我是否應該簡單地添加一個新的.cshtml文件,將所有包含移動到那裏,然後在那裏定義我的通用函數?

    回答

    0

    通常當你有通用的UI代碼時,你可以把它放在一個局部視圖中,根據需要可以包含在其他視圖中。但在你的情況,它更像是一堆你想在多個文件中的JavaScript文件。因此,您可以創建一個script bundle,它將包含所有這些腳本,並根據需要在您的頁面中使用它們。

    public class BundleConfig 
    { 
    
        public static void RegisterBundles(BundleCollection bundles) 
        { 
         // Your existing bundles here 
    
         bundles.Add(new ScriptBundle("~/bundles/jQxWidgets") 
            .Include(
            "~/Scripts/jqwidgets/jqxcore.js", 
            "~/Scripts/jqwidgets/jqxdata.js", 
            "~/Scripts/jqwidgets/jqxbuttons.js", 
            "~/Scripts/SomeOtherCustomJsfileRelatedtojQxWidgets.js")); 
        } 
    } 
    

    並且在您的具​​體視圖中,您可以將其包含在Scripts部分中。

    @section Scripts 
    { 
        @Scripts.Render("~/bundles/jQxWidgets") 
    } 
    

    或者,如果你有不只是腳本作爲共同的東西更多,創建一個局部視圖,包括您的共同的東西存在,包括根據需要在其他視圖這個局部視圖。

    ~/Views/Shared文件夾

    <h2>Common header for both the pages </h2> 
    @section Scripts 
    { 
        @Scripts.Render("~/bundles/jQxWidgets") 
    } 
    

    UserList.cshtml內部和你的其他觀點

    創建一個名爲CommonGrid.cshtml的局部視圖

    <h1>Users</h1> 
    @Html.Partial("CommonGrid") 
    

    ProductList.cshtml

    <h1>Products</h1> 
    @Html.Partial("CommonGrid") 
    

    您也可以將您的CommonGrid強類型化爲視圖模型,並在您的特定頁面視圖模型(CommonGrid的視圖模型)中創建一個屬性,並將其傳遞給Html.Partial方法。

    +0

    謝謝。在這裏也可以使用PartialView嗎?我知道這可能不是解決這個問題的最佳方式(我在其他地方讀過,將腳本放入其中並不是一個好主意),但只是想知道是否也可以。 – Andrew

    +0

    是的,如果你有更多的腳本,使用局部視圖。在答案中看到我的編輯。 – Shyju

    +0

    我剛剛意識到一些事情。你回答了我的問題,但我對其他事情很好奇。是否有可能使用嵌套佈局來解決這個問題?再一次,也許不是最好的方法。似乎腳本包是解決這個問題的唯一干淨方式。 – Andrew

    相關問題