Jquery 向MVC4应用程序和ulayout.cshtml添加脚本文件
这可能是我记错了,但是 我正在创建一个MVC4应用程序,并在索引页面中添加两个.js文件:Jquery 向MVC4应用程序和ulayout.cshtml添加脚本文件,jquery,.net,asp.net-mvc,asp.net-mvc-4,razor,Jquery,.net,Asp.net Mvc,Asp.net Mvc 4,Razor,这可能是我记错了,但是 我正在创建一个MVC4应用程序,并在索引页面中添加两个.js文件: <script type="text/javascript" src="~/Scripts/fullcalendar.js"></script> <script type="text/javascript" src="~/Scripts/moment.js"></script> 当脚本也在“\u Layout.cshtml”中时,渲染效果良
<script type="text/javascript" src="~/Scripts/fullcalendar.js"></script>
<script type="text/javascript" src="~/Scripts/moment.js"></script>
当脚本也在“\u Layout.cshtml”中时,渲染效果良好,但当脚本不在“\u Layout.cshtml”中时,渲染效果不好。如果您将脚本文件附加到\u Layout.cshtml页面,则表示您的所有视图源都包含这些脚本文件,无论特定视图是否需要它们。实际上,您在_Layout.cshtml页面中附加的所有脚本都会转到每个视图。但如果在视图中附加脚本文件,则表示这些文件仅附加到该视图 你犯了一个小错误。从_Layout.cshtml页面删除脚本文件,然后尝试以下操作: 在_Layout.cshtml中:
<head>
@RenderSection("myStyles", false); // section (for css) which layout fetch from view
@RenderSection("myScripts", false); // section (for jscript) which layout fetch from view
</head>
@RenderSection(“myStyles”,false);//从视图中获取布局的节(用于css)
@RenderSection(“myScripts”,false);//从视图中获取布局的节(对于jscript)
在你看来:
@section myStyles{
<link rel='stylesheet' href='~/Content/fullcalendar.css'>
}
@section myScripts{
<script type="text/javascript" src="/Scripts/fullcalendar.js"></script>
<script type="text/javascript" src="/Scripts/moment.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$('#calendar').fullCalendar({
header: {
left: 'prev, next today',
center: 'title',
right: 'month, agendaWeek, agendaDay'
},
defaultView: 'month',
firstDay: 1,
editable: true,
selectable: true,
slotMinutes: 60
});
});
</script>
}
<body>
//do whatever you want
</body>
@section myStyles{
}
@节myScripts{
$(文档).ready(函数(){
$(“#日历”).fullCalendar({
标题:{
左:“上一个,下一个今天”,
中心:'标题',
右图:“月,agendaWeek,agendaDay”
},
defaultView:'月份',
第一天:1,
是的,
是的,
慢分钟:60
});
});
}
//你想干什么就干什么
好的。这是我的第一个答案,对此我真的很生气,但我花了很长时间才弄明白。我希望这对每个人都有帮助
解决此问题的最佳方法是首先将所有js文件放在解决方案资源管理器中MVC应用程序的脚本文件夹中。确保它们以.js结尾,并且不在脚本文件夹的其他子文件夹中
将该文件添加到脚本文件夹后,转到应用程序启动文件夹。您将看到类文件BundleConfig.cs打开该文件。这是您将js文件添加到捆绑包的地方
代码应该如下所示:
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js",
"~/Scripts/Your.JavaScript.File.js"));
现在进入视图文件夹中的_Layout.cshtml页面。注意,您也可以在这里添加脚本标记,但我要展示的是,如果您希望链接一个js文件
在结束正文标记上方添加此代码
@Scripts.Render("~/bundles/jquery")
</body>
</html>
@Scripts.Render(“~/bundles/jquery”)
您可以将几个js文件添加到包中,并使用这一行代码调用它们。
继续运行这个程序,你应该是可靠的。谢谢各位,请让我知道这是否对你们有效。只想为上述答案添加一点内容。如果您希望向特定视图添加自定义JavaScript,并且您使用的是来自Microsoft的标准MVC4模板,那么所有捆绑的jQuery和引导JavaScript都位于页面底部。这样做的原因是,在浏览器中呈现DOM(文档对象模型,基本上是包含所有html内容的页面)后,将加载这些内容 请看_Layout.cshtml。请注意,页面底部有一行专门用于呈现一个名为“脚本”的部分
@Scripts.Render(“~/bundles/jquery”)
@Scripts.Render(“~/bundles/bootstrap”)
@RenderSection(“脚本”,必需:false)
所以,您需要做的是在view.cshtml页面中添加新的部分。将其命名为“脚本”。您应该将其添加到初始ViewBag部分之后
ExampleView.cshtml:
@{
ViewBag.Title = "Example View";
}
@section scripts{
<script type="text/javascript">
//Here is the custom javascript just for this view.
alert("I will only say hello on view.");
</script>
}
@{
ViewBag.Title=“示例视图”;
}
@节脚本{
//以下是仅用于此视图的自定义javascript。
警惕(“我只会在观看时打招呼。”);
}
启动视图时,此自定义JavaScript将仅在此视图上运行
希望这能有所帮助。这要看情况而定。您的视图看起来像什么?它是否按照您的预期呈现HTML?已更新以包含视图代码。当脚本文件位于_Layout.cshtml中时,它会正常工作,但当我将其从中删除时,它不会正常工作。控制台上是否存在任何脚本错误?您似乎使用jQuery,但尚未链接库。你的布局包括这个吗?呈现的HTML有什么不同?没有脚本错误,Jquery包含在包中,因此不需要添加到页面中(我添加它是为了确保,但它没有什么不同)。它工作时的呈现方式类似于此的空白版本:当我从_Layout.cshtml中删除脚本标记时,它只是呈现为空白页面。这是从web服务器的根目录运行的吗?如果没有,您需要在文件路径中添加~号。谢谢,@atleasttherestast。你的建议对我有用。在我的例子中,我有一个特定的
.js
文件,我只想加载一个.cshtml
文件。我将.js
文件放入它自己的包(例如名为“foo”)中,而不是将它添加到包含jquery文件的包中。我在.cshtml
文件中添加了@Scripts.Render(“~/bundles/foo”)
。
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
@RenderSection("scripts", required: false)
</body>
</html>
@{
ViewBag.Title = "Example View";
}
@section scripts{
<script type="text/javascript">
//Here is the custom javascript just for this view.
alert("I will only say hello on view.");
</script>
}