Selon diverses sources, il est apparemment impossible d'envoyer un chemin comme "/Content/Scripts/jquery.js" en tant que paramètre à l'action MVC, car des barres obliques sont utilisées en tant que délimiteurs de paramètres "/" et ASP.NET MVC renvoie 400 Erreur.Envoyer des URL/chemins aux actions du contrôleur ASP.NET MVC
La seule solution de travail que j'ai trouvé jusqu'ici était de coder Base64 telle chaîne, l'envoyer comme une valeur de paramètre et de le décoder dans l'action du contrôleur. J'encode le chemin vers le fichier JS comme ceci:
J'ai besoin parce que j'utiliser les actions de contrôleur qui retournent JavaScriptResult pour injecter minified et JavaScript modifié dans la page et je ne veux pas utiliser des gestionnaires http dans ce cas.
La question: est-ce vraiment le seul moyen avec ASP.NET MVC? Parce qu'il ne semble pas trop facile d'utilisation, pas que de nombreux utilisateurs ne partirez à la source de la page, mais de toute façon ...;)
L'URL de l'itinéraire ne peut pas commencer par un caractère '/' ou '~' et ne peut pas contenir de '?' personnage. – mare
Vous devez avoir quelque chose dans vos règles de routage qui cause cette erreur. J'ai créé une application ASP.NET MVC rapide et sale pour tester cela avant de poster et cela a fonctionné. Je viens d'utiliser les routes par défaut. À quoi ressemblent vos routes? – PatrickSteele
Comme il s'avère que cela fonctionne et c'est en fait la manière la plus propre. Assurez-vous simplement que vous avez des paramètres d'action nommés de la même manière que les paramètres QueryString. Et ils n'ont pas à faire partie d'une route MVC. Par exemple: routes.MapRoute ("GetJavaScriptService", RouteType.Regular, "Services/GetJavaScript", nouveau {controller = "Services", action = "GetJavaScript"}, null); Et l'action: publique JavaScriptResult GetJavaScript (string jsPath) {...} Et la demande: VirtualDir/GetJavaScript?jsPath = URL_Encoded_JS_path Une autre technique qui a fonctionné pour moi était la conversion de params en base64 – mare