Domanda

La nostra pagina principale di base ha qualcosa di simile al seguente

  <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>

Se questa pagina master è la pagina master per una pagina ASPX, le cose funzionano bene.

Se questa Masterpage è la Masterpage per una Masterpage figlio e una nuova pagina ASPX usa la Masterpage figlio come MasterPage, vediamo:

Errore del server nell'applicazione ''.

La raccolta Controlli non può essere modificata perché il controllo contiene blocchi di codice (ovvero <% ...% >).

Qual è il modo preferito per includere risorse globali (Javascript / CSS) in una Masterpage di base che preserva il percorso relativo in stile tilde (~)?

È stato utile?

Soluzione

Utilizza il controllo server 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>

Altri suggerimenti

Hai provato:

<script type="text/javascript" src='<%= Page.ResolveClientUrl("~/javascript/actions.js") %>'></script>

Secondo ScottGu ,

Un suggerimento di cui trarre vantaggio è il relativo supporto di correzione del percorso fornito da head runat = " server " controllo. Puoi usarlo all'interno di Pagine master per fare facilmente riferimento a un foglio di stile .CSS che viene riutilizzato in tutto il progetto (indipendentemente dal fatto che al progetto venga fatto riferimento come root o una sotto-applicazione):

La funzione di correzione del percorso del controllo head prenderà quindi il relativo percorso del foglio di stile .CSS e restituirà correttamente il percorso assoluto al foglio di stile in fase di esecuzione, indipendentemente dal fatto che si tratti di un sito Web con riferimenti alla radice o di una parte di un sub- applicazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top