Как вставить код jQuery? Uncaught ReferenceError: $ не определен в виде кода бритвы
У меня есть следующий код бритвы Asp.Net MVC 4 в конце файла.
....
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
<script type="text/javascript">
$('#Address_State').val('MA');
</script>
////// End of file
Однако он сгенерировал следующий html-код. И он вызывает ошибку в строке $('#Address_State').val('MA');
, Сообщение об ошибке: Uncaught ReferenceError: $ is not defined
. Как вставить код jQuery в файл бритвы?
.....
<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>© 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>
Обновить:
Ниже перечислены последние четыре строки _Layout.cshtml.
@Scripts.Render("~/bundles/jquery")
@RenderSection("scripts", required: false)
</body>
</html>
Ответы
Ответ 1
Вам нужно включить JQuery, прежде чем использовать его.
Обычный способ достичь этого - в вашем макете макета, включая ваши скрипты в голове. Или поместите необязательный раздел (глава), где вы можете условно включить скрипты
Сначала создайте требуемый пакет для ваших сценариев jquery, которые вы хотите на каждой странице:
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/js/required").Include(
"~/Scripts/jquery-2.0.2.js"));
//other bundles
}
Затем создайте шаблон сайта:
<!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>
Затем используйте этот файл бритвы в качестве базового макета для всех других производных видов бритвы, например:
@{
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
}
Ответ 2
Переместите следующие строки кода вверху вашего представления _Layout.cshtml внутри тега body. Затем сначала загрузятся сценарии jQuery.
<body>
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
@RenderSection("scripts", required: false)
Ответ 3
Ваш скрипт вызывается до того, как jquery будет загружен, поэтому он не знает, что означает $. Попробуйте загрузить сценарии jquery в разделе head вашего файла макета.
Ответ 4
jquery add после тела рендеринга? вы будете двигаться следующим образом "
@Scripts.Render("~/bundles/jquery")
@RenderSection("scripts", required: false)
"строки в теги
как это "
@Scripts.Render("~/bundles/jquery")
@RenderSection("scripts", required: false)
</head>
"