javascript - Comment informer JS de la racine de l'application?




asp.net-mvc-4 iis (2)

Ajoutez <base href="/jobs"> à votre balise head. Il va spécifier la racine.

Ceci est expliqué plus en détail ici https://docs.angularjs.org/guide/ $ location

J'ai du JavaScript qui fait référence /jobs/GetIndex dans un projet MVC. Cela fonctionne très bien lorsque je l'exécute localement car j'ai un Controller appelé JobsController . Lorsque je la déploie, je déploie l’application dans un sous-dossier "Jobs", ce qui signifie que l’URL doit devenir http://site/jobs/jobs/GetIndex mais il se rend à http://site/jobs/GetIndex , je suppose parce que le javascript ne sait pas ce qu'est l'URL racine et utilise le site comme racine. Comment puis-je le faire fonctionner dans les deux environnements?


Si vous souhaitez simplement obtenir l'URL racine / base du site afin que vous puissiez l'ajouter pour obtenir l'autre URL recherchée, vous pouvez simplement utiliser / tant que premier caractère de votre URL.

var urlToJobIndex2= "/jobs/GetIndex";

Voici une autre approche si vous voulez plus que la racine de l'application (Ex: URL spécifiques (construites à l'aide de méthodes d'assistance mvc telles que Url.RouteUrl etc.).

Vous pouvez utiliser la méthode d'assistance Url.Content dans votre vue rasoir pour générer l'URL dans la base de l'application, l'affecter à une variable javascript et l'utiliser dans votre autre code js pour créer vos autres URL. Veillez toujours à utiliser javascript namespacing lorsque vous le faites pour éviter les problèmes possibles avec les variables javascript globales.

Si vous souhaitez obtenir l'URL d'une méthode d'action spécifique, vous pouvez utiliser les méthodes d'assistance Url.Action ou Url.RouteUrl .

Donc, dans votre vue rasoir ( fichier de mise en page ou vue spécifique ), vous pouvez le faire.

<script>
    var myApp = myApp || {};  
    myApp.Urls = myApp.Urls || {};
    myApp.Urls.baseUrl = '@Url.Content("~")';
    myApp.Urls.jobIndexUrl= '@Url.Action("GetIndex","jobs")';
</script>
<script src="~/Scripts/PageSpecificExternalJsFile.js"></script>

Et dans votre fichier PageSpecificExternalJsFile.js , vous pouvez le lire comme

var urlToJobIndex= myApp.Urls.jobIndexUrl;
// Or With the base url, you may safely add the remaining url route.
var urlToJobIndex2= myApp.Urls.baseUrl+"jobs/GetIndex";

Here une réponse détaillée à propos de la même chose, mais en l'utilisant dans une page / vue spécifique

Js angulaire

Vous aurez peut-être besoin des bonnes URL relatives dans votre contrôleur angulaire / services / directives. La même approche fonctionnera également pour votre code angulaire. Il vous suffit de créer l'objet d'espace de noms js et d'utiliser le fournisseur de value angulaire pour transmettre les données à vos contrôleurs / services / directives angulaires, comme expliqué dans ce message en détail avec un exemple de code.





iis