2016-04-29 69 views
0

嘗試從JavaScript文件(它從Bootstrap模板中)動態加載JavaScript頁面腳本到_Layout.cshtml頁面。我在劇本改PLUGINS_PATH如下:ASP.NET MVC路由 - 動態加載.js代碼

// Declared at top of script 
var PLUGINS_PATH = './Content/plugins/'; 

// ... for each plugin script - e.g 
jQuery().themeLoadPlugin(["jPanelMenu/jquery.jpanelmenu.min.js", "jRespond/js/jRespond.js"], [], initjPMenu); 

// Load plugin 
// -------------------------------- 
themeLoadPlugin: function(js, css, callback, placement) { 
jQuery.ajaxPrefilter("script", function(s) { 
    s.crossDomain = true; 
}); 
if (js) { 
    var progress = 0; 
    var internalCallback = function() { 
    // Complete 
    if (++progress === js.length) { 
     $.each(css, function(index, value) { 
     jQuery('head').prepend('<link href="' + PLUGINS_PATH + value + '" rel="stylesheet" type="text/css" />'); 
     }); 

     if (callback && typeof(callback) === "function") { 
     callback(); 
     } 
    } 
    }; 

    if (placement === undefined) { 
    $.each(js, function(index, value) { 
     $.getScript(PLUGINS_PATH + value, internalCallback); 
    }); 
    } 
    else if (placement === 'append') { 
    $.each(js, function(index, value) { 
     jQuery('script[src*="bootstrap.min.js"]').after('<script src="' + PLUGINS_PATH + value + '"></script>'); 
     internalCallback(); 
    }); 
    } 
} 
} 

的索引頁以上的作品 - 例如應用程序的根 - http://localhost:1234/ - 但如果我然後如果我瀏覽到另一個頁面,然後鏈接顯然是因爲正在尋找 - - 例如,聯繫人頁面上:http://localhost:1234/Home/Content/plugins/jPanelMenu/jquery.jpanelmenu.min.js

如果我更改插件路徑:PLUGINS_PATH = '~/Content/plugins/';然後他們打破在每一頁上有以下幾點:

http://localhost:1234/~/Content/plugins/jPanelMenu/jquery.jpanelmenu.min.js 

希望我已經解釋過充分的問題,知道的任何幫助。

回答

0

代字號(〜)在腳本標記的src屬性中不起作用,您只需在路徑中找到文字〜。嘗試:

PLUGINS_PATH = '/Content/plugins/' 

使用單一的點,你沒使原本相對於當前目錄,而這又爲你找到你周圍的導航將改變路徑。當設定腳本源:

/相對於根

./相對於包含當前文件

目錄../相對於當前目錄的父目錄