2011-05-04 18 views
7

que tienen un problema con las rutas relativas con lo que cuando la aplicación Web se ejecuta fuera subdirectorio del dominio, los caminos no son correctas. p.ej. http://www.domain.com/webapp/MvC3 las rutas de URL relativas - Javascript

Si uso @ Url.Content ("~/path/to/action") en la página está bien. Incluso puedo insertar el @ Url.Content ("") dentro del script javascript. Quiero limpiar la página que quería poner el javascript dentro de un archivo js y hacer referencia a eso. Ahora que se llama al @ Url.Content dentro del archivo javascript, parece que no funciona (probablemente por razones obvias). ¿Cómo puedo evitar este problema?

que tenía un aspecto en el <base /> pero eso no parece funcionar.

+0

¿Qué pasa con la colocación de este JavaScript en una página maestra? – slandau

Respuesta

12

Ahora que ha movido todo en un archivo js separado, el archivo se está sirviendo como contenido estático, y la sintaxis Razor no está siendo analizada.

Si necesita caminos relativos dentro de su js que puedan cambiar, entonces debe incluir un script en cada página que establezca una ruta var, y use @ Url.Content (...) en este script, por ejemplo,

<script type="text/javascript"> 
    pathToAction = "@Url.Content(...)"; 
</script> 

Luego, declare la var pathToAction en su archivo js, ​​y úselo cuando sea necesario.

+0

Inteligente, no pensé en este enfoque. Gracias. único que hice fue sólo tiene que utilizar unos caminos como scriptfolder = '@ Url.Content ("~/scripts /")', imagefolder = '@ Url.Content ("~/images /")' y luego sólo les adjunta a las URL actuales que ya están allí. – fes

+0

Acabo de pensar, ¿qué pasa con CSS, donde los estilos están en un archivo css? si tiene imágenes o fondos en una carpeta, pero esa debe ser una ruta relativa. – fes

+1

Las rutas en CSS son relativas al archivo CSS, no a la página cargada. Entonces puedes hacer rutas como 'background-image: url ('../ images/image1.png');' – moonpatrol

Cuestiones relacionadas