2009-10-06 4 views
3

Considérez le besoin de $.post() pour une structure d'URL légèrement différente dans l'environnement Visual Studio Dev par rapport à l'environnement de production ou de test IIS déployé.

Lors du déploiement sur le serveur de test, l'application s'exécute sous un répertoire virtuel dans IIS. L'URL sera quelque chose comme:

Déployé

URL: http://myServer/myApplication/Area/Controller/Action

En utilisant .post() de jQuery, je dois fournir la chaîne:

$.post("/myApplication/myArea/myController/myMethod" 

Développement

Quand dans la Visua l studio environnement

URL Cassini est: http://localhost:123/Area/Controller/Action

En utilisant jQuery de .post(), je dois fournir la chaîne:

$.post("/myArea/myController/myMethod" 

Question: Comment puis-je faire ces deux utilisent la même ligne de code, quel que soit leur environnement déployé?

Répondre

3

La façon dont je l'ai fait est en générant l'URL de la méthode RouteUrl comme ceci:

var url = "<%= Url.RouteUrl(new { area="myArea", controller = "controller", action = "actionmethod" }) %>"; 
$.post(url ... 

Tant que vos itinéraires sont mis en place correctement, cela va générer l'URL appropriée.

Editer: Fonctionne maintenant avec les zones sans modification.

1

Une autre (? Plus simple) la mise en œuvre serait d'installer une variable js de votre application racine:

<script type="text/javascript" > 
    var globalAppPath = '<%= Request.ApplicationPath %>'; 
</script> 

Ensuite, vous pouvez simplement l'ajouter au début de toute demande d'URL.

$.post(globalAppPath + "/myArea/myController/myMethod" 

Cela fonctionnera, peu importe où vous mettez votre application web.

Questions connexes