JQuery After Body ASP .NET MVC 4
我刚刚创建了一个ASP .NET MVC 4 WebAPI项目。
在查看默认的_Layout.cshtml时,我看到在渲染正文(不在头部)之后插入了jquery脚本。
@ViewBag.Title @Styles.Render("~/Content/themes/base/css", "~/Content/css") @Scripts.Render("~/bundles/modernizr") @RenderBody() @Scripts.Render("~/bundles/jquery") @RenderSection("scripts", required: false)
这会导致错误
$ is not defined
当然,试着写
$(document).ready(function() {...}).
移动
@Scripts.Render("~/bundles/jquery")
进入_Layout.cshtml的head部分纠正问题,jquery按预期工作。
这是怎么回事? 我做错了什么,并且_Layout.cshtml中的Script.Render的默认位置是有原因的吗?
脚本加载和执行阻止页面的呈现。
您可以通过在页面的多个部分添加提醒来查看此信息。 这就是为什么建议将js文件放在页面后面的原因。
您还可以通过在页面末尾添加jquery的页面后面的页面脚本部分来解决您的问题。
编辑:以下是Scott Guthrie关于剃刀部分的文章: http : //weblogs.asp.net/scottgu/archive/2010/12/30/asp-net-mvc-3-layouts-and-sections-with-razor的.aspx
@Scripts.Render("~/bundles/jquery")
导致MVC 4和VS 2010出现问题。当您尝试创建jQuery对话框时,此问题会变得更加明显。
正如JeffN825所述,唯一的出路就是注释掉@Scripts.Render("~/bundles/jquery")
。
现在众所周知的是: @Scripts.Render("~/bundles/jquery")
评论出来的分支是什么?
我使用以下jquery库:
注意:jquery-1.7.2.min.js不起作用。
虽然接受的答案链接到有关如何执行此操作的详细信息,但更直接的答案如下:
_Layout.cshtml包含行…
@RenderSection("scripts", required: false)
…将在视图中插入一个名为“scripts”的部分 – 例如Index.cshtml:
This is Index.cshtml
@section scripts { }
- Angularjs + ASP.NET MVC + ASP.NET Web API
- Ajax调用MVC Controller返回“NOT FOUND”
- ViewData.ModelState.IsValid为false,因为Mvc无法解析用逗号分隔数百和数千的值
- asp.net mvc jquery填充图片
- 根据datepicker值在控制器中运行方法
- 使用.Net和Javascript以PNG作为掩码覆盖图像
- ASP.NET MVC Jquery Ajax发布表单序列化?
- 如何使用Request.Form()访问下拉文本(而不是值)?
- ASP.NET MVC中的Ajax FileUpload和JQuery formData