2011-05-25 25 views
8

Obtuve un proyecto .NET MVC3 que acaba de implementarse en un servidor real dentro de un directorio virtual. Vamos a llamarlo VirtDir. Todos mis archivos JavaScript tenían URL para AJAX definidos así:Problema de enrutamiento url AJAX en IIS con directorio virtual

"/Home/Save/" 

que funcionaba perfectamente localmente.

En el servidor real, que la primera "/" mata el directorio virtual, por lo que obtener

"/Home/Save/" en lugar de "/VirtDir/Home/Save/" que falle obviamente.

Si quito la primera "/", entonces las cosas se rompen localmente, lo que resulta en la URL definida que se añade a la URL de la página actual: Si se encuentra en "/Home/Index" página, la URL AJAX podría apuntar a

"/Home/Index/Home/Save".

Mi JavaScript está en archivos .js * separadas, por lo que no puede escribir realmente @Url.Content a ellos.

¿Alguien sabe de una buena solución para este problema?

Respuesta

22

Puede agregar un código a su archivo de diseño o página maestra que escribe el directorio raíz en una variable JS antes de incluir el archivo JS. Luego puede usar esa variable para construir la ruta en su archivo JS.

En Razor:

<script type="text/javascript"> 
    var rootDir = "@Url.Content("~/")"; 
</script> 
<script src="@Url.Content("~/Scripts/MyScript.js")" type="text/javascript"></script> 

continuación, sólo puede construir su URL en el archivo de la siguiente manera:

var myurl = rootDir + "Home/Save/"; 
+1

Gracias. De hecho, terminé haciendo algo similar a esto. – Dimskiy

+0

hola @Dimskiy, ¿puedes comentar lo que terminaste haciendo? –

+0

@LexyFeito Esto fue en 2011 ... – Dimskiy

Cuestiones relacionadas