2016-04-29 8 views
0

Der Versuch, JavaScript-Plugins auf einer _Layout.cshtml-Seite dynamisch zu laden - aus einer JavaScript-Datei (aus einer Bootstrap-Vorlage). Ich habe die PLUGINS_PATH im Skript wie folgt geändert:ASP.NET MVC Routing - Laden von .js scrips dynamisch

// 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(); 
    }); 
    } 
} 
} 

Die oben genannten Arbeiten für die Indexseite - z Wurzel der Anwendung - http://localhost:1234/ - aber wenn ich dann, wenn ich zu einer anderen Seite browse dann die Links offensichtlich wie Sie suchen - z. auf der Kontaktseite: http://localhost:1234/Home/Content/plugins/jPanelMenu/jquery.jpanelmenu.min.js

Wenn ich den Plugins Pfad zu ändern: PLUGINS_PATH = '~/Content/plugins/'; dann brechen sie auf jeder Seite mit dem folgenden:

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

hoffte, ich habe das Problem angemessen, jede mögliche Hilfe geschätzt erklärt.

Antwort

0

Die Tilde (~) funktioniert nicht im src-Attribut eines Skript-Tags, Sie erhalten nur ein Literal ~ im Pfad, wie Sie gefunden haben. Versuchen:

PLUGINS_PATH = '/Content/plugins/' 

einen einzigen Punkt verwenden, wie Sie ursprünglich hatte den Pfad relativ zum aktuellen Verzeichnis macht, die wiederum, wie Sie gefunden haben, wie Sie rund um navigieren ändern. Bei der Einstellung der Skript Quelle:

/relativ zum Stamm

./ relativ zu dem Verzeichnis, das die aktuelle Datei enthält

../ in Bezug auf das übergeordnete Verzeichnis des aktuellen Verzeichnisses