Monday, June 3, 2024
 Popular · Latest · Hot · Upcoming
52
rated 0 times [  57] [ 5]  / answers: 1 / hits: 100073  / 16 Years ago, mon, march 30, 2009, 12:00:00

I'm trying to add a script reference to jQuery in my master page so that it will work for any page. It currently looks like this



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


The problem is that the path is always relative to the executing aspx page so this will only work if the jquery.js file is located in the same folder. To make it work I have to change the line to:



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


This is obviously less than ideal because it will only work for pages that are two levels deep from the root folder. If I try the following, IIS throws an error about an unexpected character.



<script runat=server type=text/javascript src=~/jquery.js></script>


Any ideas?



EDIT: I forgot to mention as well that the script MUST be in the head tag



The current top answer throws a ASP.NET Ajax client-side framework failed to load. error when I add it to my master page. Its thrown from javascript and not the .Net compiler. If I move the ScriptManager to the head section where it should be I get a compile error about the ScriptManager needing to be inside a form tag.



The third answer throws a Illegal characters in path. exception from the compiler



EDIT 2: When I add that line to my head tag I get this error from IIS.



The Controls collection cannot be modified because the control contains code blocks (i.e. <% ... %>)



SOLVED: I took the edited response from the answer below and put it inside an asp:ContentPlaceHolder element


More From » asp.net

 Answers
10

You could use a ScriptManager:



<asp:ScriptManager ID=ScriptManager1 runat=server>
<Scripts>
<asp:ScriptReference Path=~/jquery.js />
</Scripts>
</asp:ScriptManager>


EDIT: If you absolutely need this in your <head> section, you could do something like:



<head>
<script type=text/javascript
src=<%= Page.ResolveClientUrl(~/jquery.js) %>></script>
</head>


EDIT 2: According to the comments, if you are observing that




The Controls collection cannot be modified because the control contains code blocks (i.e. <% ... %>)




you may need to change the above to use the data-binding syntax:



<head>
<script type=text/javascript
src=<%# Page.ResolveClientUrl(~/jquery.js) %>></script>
</head>

[#99781] Saturday, March 21, 2009, 16 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
keric

Total Points: 572
Total Questions: 93
Total Answers: 97

Location: Cyprus
Member since Mon, Oct 24, 2022
2 Years ago
;