2013-03-17 16 views
13

Mam następujący kod maszynki do golenia Asp.Net MVC 4 na końcu pliku.

.... 
@section Scripts { 
    @Scripts.Render("~/bundles/jqueryval") 
} 

<script type="text/javascript"> 
    $('#Address_State').val('MA'); 
</script> 
////// End of file 

Jednak wygenerował następujący kod HTML. I podnosi błąd na linii $('#Address_State').val('MA');. Komunikat o błędzie to Uncaught ReferenceError: $ is not defined. Jak wstawić kod jQuery do pliku brzytwy?

..... 
<script type="text/javascript"> 
    $('#Address_State').val('MA'); // Uncaught ReferenceError: $ is not defined 
</script> 
      </section> 
     </div> 
     <footer> 
      <div class="content-wrapper"> 
       <div class="float-left"> 
        <p>&copy; 2013 - Paperspeed</p> 
       </div> 
      </div> 
     </footer> 

     <script src="/Scripts/jquery-1.9.1.js"></script> 


    <script src="/Scripts/jquery.unobtrusive-ajax.js"></script> 
<script src="/Scripts/jquery.validate.js"></script> 
<script src="/Scripts/jquery.validate.unobtrusive.js"></script> 


    </body> 
</html> 

Aktualizacja:

Poniżej znajduje się ostatnie cztery linie _Layout.cshtml.

 @Scripts.Render("~/bundles/jquery") 
     @RenderSection("scripts", required: false) 
    </body> 
</html> 
+0

należy przenieść skryptu do dołu. – CodeColorist

+0

@ChiChou Skrypt jquery znajduje się już na samym dole pliku. – ca9163d9

+0

Miałem na myśli twój skrypt, a nie jQuery. Zobacz poniższe odpowiedzi. – CodeColorist

Odpowiedz

23

Musisz dodać JQuery zanim faktycznie go użyjesz.

Typowym sposobem na osiągnięcie tego jest układ podstawowy, w którym wymagane są skrypty w głowie. Lub umieścić opcjonalną sekcję (głowa), gdzie można warunkowo zawierać skrypty

Najpierw utwórz wymaganą wiązkę do skryptów jquery chcesz na każdej stronie:

public static void RegisterBundles(BundleCollection bundles) 
{ 
    bundles.Add(new ScriptBundle("~/js/required").Include(
     "~/Scripts/jquery-2.0.2.js")); 

    //other bundles 
} 

następnie utworzyć szablon strony:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8" /> 
    <title>Title</title> 
    @Styles.Render("~/css/required") 
    @RenderSection("head", false) //For css on a page by page basis 
</head> 
<body> 
    @RenderBody() 
    @Scripts.Render("~/js/required") //Here add your jquery include 
    @RenderSection("scripts", false) //Here you add scripts at the bottom of the page 
</body> 
</html> 

Następnie użyj tego pliku ostrzami układzie bazowym dla wszystkich innych pochodnych poglądów brzytwa tak:

@{ 
    ViewBag.Layout = "~/Views/Shared/_MasterLayout.cshtml"; 
} 

@section head { 
    //Any css you want to add 
} 

<p>Some html content</p> 

@section scripts { 
    //scripts you want to include at the bottom on a page by page basis 
} 
5

Twój skrypt jest wywoływany, zanim jquery zostanie załadowany, więc nie wie, co oznacza $. Spróbuj załadować skrypty jquery do sekcji head twojego pliku układu.

10

Przenieś następujące wiersze kodu do górnej części widoku _Layout.cshtml wewnątrz znacznika body. Następnie skrypty jQuery zostaną załadowane jako pierwsze.

<body> 
    @Scripts.Render("~/bundles/jquery") 
    @Scripts.Render("~/bundles/bootstrap") 
    @RenderSection("scripts", required: false) 
+1

to jest najdokładniejsza odpowiedź na ten problem. –

0

Dodawanie jquery jest po treści renderowania? będziesz poruszać po "

@Scripts.Render("~/bundles/jquery") 
@RenderSection("scripts", required: false) 

" linii tagów

do

jak ten "

@Scripts.Render("~/bundles/jquery") 
@RenderSection("scripts", required: false) 
</head> 

"

Powiązane problemy