如何在使用Layout时在View中添加脚本src

dfe*_*aro 89 asp.net-mvc razor

我想要包含一个javascript引用,如:

<script src="@Url.Content("~/Scripts/jqueryFoo.js")" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

如果我有一个Razor View,那么在不必将它添加到Layout的情况下包含它的正确方法是什么(我只需要在一个特定的View中,而不是所有的都需要它)

在aspx中,我们可以使用内容占位符..我发现在mvc中使用aspx而不是Razor视图的旧示例..

Bra*_*tie 156

根据您希望如何实现它(如果您需要脚本的特定位置),您可以@section_Layout其中实现一个可以使您从视图本身添加其他脚本,同时仍保留结构.例如

_布局

<!DOCTYPE html>
<html>
  <head>
    <title>...</title>
    <script src="@Url.Content("~/Scripts/jquery.min.js")"></script>
    @RenderSection("Scripts",false/*required*/)
  </head>
  <body>
    @RenderBody()
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

视图

@model MyNamespace.ViewModels.WhateverViewModel
@section Scripts
{
  <script src="@Url.Content("~/Scripts/jqueryFoo.js")"></script>
}
Run Code Online (Sandbox Code Playgroud)

否则,你有什么是好的.如果您不介意它与输出视图"内联",您可以将<script>声明放在视图中.

  • BTW,部分基本上是您所指的内容占有者.请参阅默认的MVC Web项目以及它们如何在页面上放置标题. (3认同)
  • @dferraro:那么你需要在你的布局中添加`RenderSection("Scripts")`(就像你的占位符一样),然后在视图中定义一个`@section Scripts {}`.在某些时候,对"主"(_layout)的修改迫在眉睫.你不能只在视图中定义一些内容并告诉它"将它放在`<head>`之间"(除非你想进入添加脚本的脚本) (3认同)
  • +1.另外@dferraro更好的是将引用放在</ body>之前的jQuery和RenderSection,而不是在头部.旧但相关的阅读:http://developer.yahoo.com/blogs/ydn/posts/2007/07/high_performanc_5/ (2认同)

Dil*_*are 12

如果您使用的是Razor视图引擎,请编辑_Layout.cshtml文件.将页脚中存在的@ Scripts.Render("〜/ bundles/jquery")移动到标题部分,并根据需要编写javascript/jquery代码:

@Scripts.Render("~/bundles/jquery")
<script type="text/javascript">
    $(document).ready(function () {
        var divLength = $('div').length;
        alert(divLength);
    });
</script>
Run Code Online (Sandbox Code Playgroud)


小智 5

您可以添加脚本标签,就像我们在 asp.net 中使用的那样,同时进行如下客户端验证。

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>
<script type="text/javascript" src="~/Scripts/jquery-3.1.1.min.js"></script>
<script type="text/javascript">
    $(function () {
       //Your code
    });
</script>
Run Code Online (Sandbox Code Playgroud)