2010-10-06 6 views
0

Im avec ma première application web et ceci est mon premier déploiement.Routes MVC/url, jQuery et les répertoires virtuels

Tout fonctionne sur local, mais n'est pas à distance. J'ai utilisé l'option de déploiement Web de VS2010.

Première:

<link href="../../Content/Site.css" rel="stylesheet" type="text/css" /> 
<script src="../../Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> 

L'application sait que Site.css se trouve à:

domain.com/VDir/Content/Site.css

Mais sa recherche la jquery sur :

domain.com/Scripts/jquery ...

Son étrange que peut trouver la css mais pas la jquery.

Ok, j'ai vu ici que je peux utiliser:

<script src="<%: Url.Content ("~/Scripts/jquery-1.4.1.min.js") %>" type="text/javascript"></script> 

Avec cela, je suis arrivé travail jquery.

Mais ... Tous les exemples de jquery urls est comme la gestion:

$.ajax({ 
    url: "/Home/Index", 
    ... 

Mais avec cela, recherche:

domain.com/Home/Index

Je me souviens quand Je lisais le livre mvc asp.net que le moteur de routes est assez intelligent pour ignorer le directeur virtuel. En d'autres termes, une partie de l'URL est "domain.com/VDir" et l'autre est "/ Home/Index"

En bref, ce que je fais mal? Comment puis-je dire à mon application qui fonctionne sous un VDIR et toutes les url ont le chemin VDir sur l'url.

Merci.

Répondre

1

Dans votre Site.master utiliser ce script

<script type="text/javascript"> 
    window.MVCURL = '<%= Url.Action("--Action--","--Controller--") %>'; 
</script> 

maintenant dans votre jquery vous pouvez utiliser

var myRoute = window.MVCURL.replace("--Action--", "yourActionName") 
myRoute = myRoute.replace("--Controller--", "yourControllerName") 
Questions connexes