Próbuję dodać referencję do skryptu do jQuery na mojej stronie wzorcowej, aby działała dla dowolnej strony. Obecnie wygląda toProblemy ze stroną ASP.Net i ścieżką pliku
<script type="text/javascript" src="jquery.js"></script>
Problem polega na tym, że droga jest zawsze w stosunku do wykonującego strony aspx tak to będzie działać tylko wtedy, gdy „jquery.js” plik znajduje się w tym samym folderze. Aby to działało muszę zmienić linię do:
<script type="text/javascript" src="../../jquery.js"></script>
To jest oczywiście mniej niż ideał, bo to będzie działać tylko na stronach, które są głęboko dwa poziomy z folderu głównego. Jeśli spróbuję następujących rzeczy, usługi IIS zgłaszają błąd dotyczący nieoczekiwanego znaku.
<script runat="server" type="text/javascript" src="~/jquery.js"></script>
Wszelkie pomysły?
EDIT: Zapomniałem wspomnieć także, że skrypt musi być w tagu głowy
Aktualnym top odpowiedź rzuca „ASP.NET Ajax ram po stronie klienta nie udało się załadować” błąd kiedy dodaję go do mojej strony wzorcowej. Jest wyrzucany z javascript, a nie z kompilatora .Net. Jeśli przeniesię skrypt ScriptManager do sekcji head, gdzie powinien być, otrzymam błąd kompilacji związany z tym, że ScriptManager musi znajdować się wewnątrz znacznika formularza.
Trzecia odpowiedź rzuca „znaki nielegalne w ścieżce.” Wyjątek od kompilatora
EDIT 2: Kiedy dodać tę linię do mojego tagu głowy mam ten błąd z IIS.
kolekcji Controls nie mogą być modyfikowane, ponieważ kontrola zawiera bloki kodu (tj <% ...%>)
rozwiązany: Wziąłem edytowany odpowiedź z odpowiedzią poniżej i umieścić go wewnątrz asp: ContentPlaceHolder elementem
Tak, jest to wysoce zalecana metoda w wielu książkach ASP.NET, które napisałem podczas pracy ze ścieżkami na stronach wzorcowych. – Kezzer
FYI, mój współpracownik i ja właśnie wypróbowaliśmy to. Wydaje się, że nie działa to w scenariuszu zagnieżdżonych stron wzorcowych * na nadrzędnej stronie wzorcowej *. Przeniesienie go na podrzędną stronę wzorcową jednak rozwiązało problem. – technomalogical
To działało dla mnie na prawie wszystkich moich stronach, ale dla 2 stron, które wysadziłyby się z pewnym wyjątkiem: "Kolekcja kontrolna nie może być zmodyfikowana, ponieważ kontrolka zawiera kod". Rozwiązaniem jest zmiana skryptu uwzględnij w nagłówku z bloku kodu odpowiedzi response.write do analizatora databind (tj. - zmień <% = na <% #). Zaryzykowałbym przypuszczenie, że jest to pewnego rodzaju próba ze strony MS, aby zatrzymać ataki nagłówka http. Lepsze wyjaśnienie tej prostej poprawki można znaleźć na stronie: http://leedumond.com/blog/the-controls-collection-cannot-be-modified-because-control-contains-code-blocks/ – Jagd