Pregunta

Esta puede ser una pregunta dolorosamente simple por la cual me burlaré, pero tengo dificultades para usar rutas de archivos en páginas maestras. Creo que esto se debe a que si una página en un subdirectorio usa la página maestra, la ruta del archivo es incorrecta.

Para solucionar esto, necesito obtener la ruta del archivo desde la raíz, pero parece que no puedo hacer que funcione.

Intenté:

            <script type="text/javascript" src="~/jQueryScripts/jquery.js"></script> 

y

            <script type="text/javascript" src="../jQueryScripts/jquery.js"></script> 

¡Tampoco suerte!

¿Alguna idea sobre cómo puedo decirle que obtenga la ruta del archivo desde la raíz? Gracias :)

¿Fue útil?

Solución

Solo estoy asumiendo que por filepath, en realidad te refieres a url (o uri, olvido cuál es parcial).

Sin el ~, el primer ejemplo debería funcionar. <script type="text/javascript" src="/jQueryScripts/jquery.js"></script> haría que el navegador solicite http://www.example.com/jQueryScripts/jquery .js (donde www.example.com es su dominio).

Otros consejos

Si está ejecutando un sitio habilitado para AJAX, consulte mi respuesta a Forma preferida de incluir referencias relativas a JavaScript en la página maestra anidada VS 2008 .

Creo que necesita tener runat=server en la etiqueta <head> de MasterPage para que esta URL rebase funcione.

<head runat="server">

Primero, la tilde al frente es una cosa asp.net para usar en los controles del servidor y no funcionará en HTML básico.

Sin entrar en explicaciones detalladas, puede usar una barra (/) al frente e incluir el nombre de la aplicación web si no es el sitio raíz.

O podría poner código en su página maestra para incluir dinámicamente los scripts y dejar que maneje la ruta. Me gusta:

    public void AddJavascript(string javascriptUrl)
    {   
        HtmlGenericControl script = new HtmlGenericControl("script");
        script.Attributes.Add("type", "text/javascript");
        javascriptUrl += "?v" + Assembly.GetExecutingAssembly().GetName().Version;
        script.Attributes.Add("src", ResolveUrl(javascriptUrl));
        Page.Header.Controls.Add(script);
    }

El código anterior también agrega la versión de ensamblaje. Lo uso principalmente para el desarrollo, por lo que mis archivos javascript se actualizan cada vez que construyo.

Puede usar el método Page.ResolveUrl para solucionar esto

por ejemplo:

<script type="text/javascript" src="<%=Page.ResolveUrl("~/jQueryScripts/jquery.js")%>"></script>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top