2016-04-29 26 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/' 

使用单一的点,你没使原本相对于当前目录,而这又为你找到你周围的导航将改变路径。当设定脚本源:

/相对于根

./相对于包含当前文件

目录../相对于当前目录的父目录