2016-06-20 22 views
8

Utworzono podstawowy szablon ASP.NET i napisałem skrypt jquery. Kiedy patrzę na stronę widzę, że jquery jest ładowany na stronę, ale skrypt nie działa. Spojrzałem na stronę dokumentacji ASP.NET i mój layout.cshtml wygląda tak samo, więc czy są dodatkowe kroki, które muszę wykonać, aby jquery działało? enter image description here Strona głównaJak używać jquery w ASP .NET Core

@{ 
    ViewData["Title"] = "Home Page"; 
} 
<!-- Page Content--> 
<div class="container"> 
    <div class="row"> 
     <form method="post" enctype="multipart/form-data"> 
      <input type="file" id="files" name="files" multiple /> 
      <input type="button" id="upload" value="Upload Selected Files" /> 
     </form> 
    </div> 
</div> 
<script> 
    $(document).ready(function() { 
     alert("Test"); 
    }); 
</script> 

Rozwiązanie

@section scripts 
{ 
    <script> 
     $(document).ready(function() { 
      alert("Test"); 
     }); 
    </script> 
} 
+0

Czy masz jakieś błędy w konsoli debugowania? – Jamiec

+1

Czy ładujesz jQuery przed '$ (document) .ready'? – apokryfos

+1

Gdzie jest twoje odniesienie do jQuery w odniesieniu do tej strony? Czy jest powyżej lub poniżej tego skryptu? –

Odpowiedz

4

Podejrzewam Twój jQuery jest załadowany po resztę zawartości strony.

Oznacza to, że nie można odwoływać się do obiektów jquery, ponieważ biblioteka nie została jeszcze zainicjowana.

Przenieś skrypt strony po załadowaniu jquery.

<script type="text/javascript" src="/Scripts/jquery-2.2.4.js"></script> 
<script> 
    $(document).ready(function() { 
     alert("Test"); 
    }); 
</script> 

Dla efektywności Polecam to zrobić na jeden z dwóch sposobów:


WARIANT 1

Użyj plik skryptu głównego który ładuje po jQuery.

<script type="text/javascript" src="/Scripts/jquery-2.2.4.js"></script> 
<script type="text/javascript" src="/Scripts/Master.js"></script> 

WARIANT 2

Użyj szablonu zastępczy, który zawsze będzie załadowany po jQuery ale można zainicjować na poszczególnych stronach.

Strona wzorcowa

<script type="text/javascript" src="/Scripts/jquery-2.2.4.js"></script> 
<asp:ContentPlaceHolder ID="RootScripts" runat="Server"/> 

Page Content

<asp:Content ID="PageScripts" ContentPlaceHolderID="RootScripts" runat="Server"> 
    <script> 
    $(document).ready(function() { 
     alert("Test"); 
    }); 
    </script> 
</asp:Content> 
+1

Tak, to mogło zadziałać, ale użyłem sekcji. Skrypty @section { } – John

+1

Czy mogę wybrać odpowiedź w duplikacie? – John

+0

Tak, nadal możesz oznaczyć każde pytanie jako udzielone w odpowiedzi na niektóre pytania, chociaż podobne nie zawsze są dokładne. Zaznacz pytanie, które pomogło rozwiązać problem. Zduplikowany link do pytania po prostu pomoże innym z prostymi problemami w przyszłości. – Obsidian

1

o wyjaśnienie


Jeśli odwołanie jQuery na stronie _Layout .. podwójnej kontroli w celu zapewnienia th co to odnosi się w TOP swojej stronie _Layout bo jeśli to jest na dole, to każda inna strona masz to użyj _Layout i ma jQuery, to daje błędy, takie jak:

$ jest niezdefiniowany

ponieważ próbujesz użyć jQuery, zanim zostanie zdefiniowany!

Ponadto, jeśli odwołują jQuery na stronie _Layout wtedy nie trzeba odwoływać się do niej ponownie w swoich stronach, które wykorzystują swój styl _Layout


Upewnij się, że jesteś ładowania odniesienie do jQuery zanim zaczniesz używać <scripts>.

Twój cshtml powinno działać, jeśli umieścić odniesienie powyżej skryptu jako tak:

<script src="~/Scripts/jquery-1.10.2.js"></script> // or whatever version you are using 

// you do not need to use this reference if you are already referencing jQuery in your Layout page 

<script> 
    $(document).ready(function() { 
     alert("Test"); 
    }); 
</script> 
+1

Dlaczego miałbym załadować go dwa razy? – John

+0

nie ładujesz go dwa razy ... załaduj go raz, ale wczytaj, zanim strona zostanie wyświetlona na ekranie ... po prostu przenieś swoje odniesienie do jQuery nad swój skrypt –

+0

Szablon ASP.NET Core robi to za ciebie w _Layout plik .cshtml. Dodatkowo używa tagu środowiska, aby wybrać lokalną kopię w Dev lub CDN w inscenizacji i produkcji. –