Forma preferida de incluir referencias relativas a JavaScript en la página maestra anidada de VS 2008
-
06-07-2019 - |
Pregunta
Nuestra página maestra base tiene algo como lo siguiente
<head runat="server">
<title></title>
<script type="text/javascript" src="<%= Page.ResolveClientURL("~/javascript/actions.js")%>"></script>
<script type="text/javascript" src="<%= Page.ResolveClientURL("~/javascript/jquery/jquery-1.2.6.min.js")%>"></script>
<asp:contentplaceholder id="cph_htmlhead" runat="server">
</asp:contentplaceholder>
</head>
Si esta página maestra es la página maestra para una página ASPX, las cosas funcionan bien.
Si esta página maestra es la página maestra para una página maestra secundaria y luego una nueva página ASPX usa la página maestra secundaria ya que es MasterPage, vemos:
Error del servidor en la aplicación ''.
La colección Controls no se puede modificar porque el control contiene bloques de código (es decir, <% ...% >).
¿Cuál es la forma preferida de incluir recursos globales (Javascript / CSS) en una página maestra básica que conserva el estilo relativo de tilde (~)?
Solución
Utilice el control del servidor ScriptManager:
<asp:ScriptManager ID="myScriptManager" runat="server">
<Scripts>
<asp:ScriptReference Path = "~/javascript/actions.js" />
<asp:ScriptReference Path = "~/javascript/jquery/jquery-1.2.6.min.js" />
</Scripts>
</asp:ScriptManager>
Otros consejos
¿Has probado:
<script type="text/javascript" src='<%= Page.ResolveClientUrl("~/javascript/actions.js") %>'></script>
Según ScottGu ,
Un consejo para aprovechar es el soporte relativo de reparación de ruta proporcionado por head runat = " server " controlar. Puede usar esto dentro de las páginas maestras para hacer referencia fácilmente a una hoja de estilo .CSS que se reutiliza en todo el proyecto (independientemente de si el proyecto está referenciado a raíz o es una sub-aplicación):
La función de corrección de ruta del control principal tomará la ruta relativa de la hoja de estilo .CSS y generará correctamente la ruta absoluta a la hoja de estilo en tiempo de ejecución, independientemente de si se trata de un sitio web de referencia raíz o parte de un sub- solicitud.