将脚本文件添加到 MVC4 应用程序和 _ Layout.cshtml 混淆

Roo*_*aur 2 .net asp.net-mvc jquery razor asp.net-mvc-4

这可能是我记错的情况,但是......

我正在创建一个 MVC4 应用程序,并且在索引页面中我希望添加两个 .js 文件:

    <script type="text/javascript" src="~/Scripts/fullcalendar.js"></script>
    <script type="text/javascript" src="~/Scripts/moment.js"></script>
Run Code Online (Sandbox Code Playgroud)

这会添加文件,但对它们没有任何作用。我唯一获得所需结果的时间是我还将文件添加到_Layout.cshtml.

我确定在过去的项目中,我可以将 .js 文件添加到页面中,并且效果很好,为什么从头开始项目时我需要将所有内容都放在_Layout.cshtml文件中?难道我做错了什么?

编辑: index.cshtml 文件中的唯一代码是:

<link rel='stylesheet' href='~/Content/fullcalendar.css'>
<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>
    <div id='calendar'></div>
</body>
Run Code Online (Sandbox Code Playgroud)

当脚本也在`_Layout.cshtml'中时呈现良好,但当它们不在时则不呈现。

小智 7

只是想在上面的答案中添加一些内容。如果希望将自定义 JavaScript 添加到特定视图,并且您使用的是来自 Microsoft 的标准 MVC4 模板,则所有捆绑的 jQuery 和 BootStrap JavaScript 都位于页面底部。这样做的原因是,这些将在 DOM(文档对象模型,基本上是包含所有 html 内容的页面)在浏览器中渲染后加载。

查看_Layout.cshtml。请注意,页面底部有一行专门用于呈现名为“脚本”的部分

    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/bootstrap")
    @RenderSection("scripts", required: false)
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

因此,您需要做的是在视图 .cshtml 页面中添加新部分。将其命名为“脚本”。您应该将其添加到初始 ViewBag 部分之后。

示例视图.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>
}
Run Code Online (Sandbox Code Playgroud)

当您启动视图时,此自定义 JavaScript 将仅在此视图上运行。

希望这可以帮助。


AtL*_*ast 5

好的。这是我的第一个答案,我对此非常满意,但我花了很长时间才弄明白。我希望这对大家有帮助。

解决此问题的最佳方法是首先将所有 js 文件放在解决方案资源管理器中 MVC 应用程序的 Script 文件夹中。确保它们以 .js 结尾,并且不在 Scripts 文件夹的其他子文件夹中。

将该文件添加到 Scripts 文件夹后,转到 App_Start 文件夹。您将看到类文件 BundleConfig.cs 打开该文件。这是你将你的 js 文件添加到你的包的地方

代码应该是这样的:

bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js",
"~/Scripts/Your.JavaScript.File.js"));
Run Code Online (Sandbox Code Playgroud)

现在进入views文件夹中的_Layout.cshtml页面。请注意,您也可以在此处添加脚本标签,但我所展示的是您是否希望链接 js 文件。

在结束正文标记上方添加此代码。

@Scripts.Render("~/bundles/jquery")
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

您可以将多个 js 文件添加到包中,并使用这行代码调用它们。继续运行程序,你应该很稳定。谢谢大家请让我知道这是否适合您。