ASP.NET MVC路由-动态加载.js脚本

ASP.NET MVC routing - loading .js scrips dynamically

本文关键字:加载 js 脚本 动态 NET MVC 路由 ASP      更新时间:2023-09-26

尝试在_Layout.cshtml页面上动态加载JavaScript插件脚本-从JavaScript文件内部加载(来自Bootstrap模板)。我已将脚本中的PLUGINS_PATH更改如下:

// 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 

希望我已经充分解释了这个问题,任何帮助都表示感谢。

波浪号(~)在脚本标记的src属性中不起作用,您只会在找到的路径中得到一个文字~。尝试:

PLUGINS_PATH = '/Content/plugins/'

像最初那样使用一个点可以使路径相对于当前目录,正如您所发现的,当您四处导航时,该目录也会发生变化。设置脚本源时:

/相对于根

相对于包含当前文件的目录

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