web-dev-qa-db-ja.com

レイアウトを使用するときにビュー内にスクリプトsrcを追加する方法

次のようなjavascript参照を含めたいです。

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

Razorビューがある場合、これをレイアウトに追加せずに含める適切な方法は何ですか(すべてではなく、単一の特定のビューでのみ必要です)

Aspxでは、コンテンツプレースホルダーを使用できます。mvcではaspxを使用し、Razorビューでは使用しない古い例を見つけました。

82
dferraro

実装方法に応じて(スクリプトが必要な特定の場所がある場合)、@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>

表示する

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

そうでなければ、あなたが持っているものは大丈夫です。出力されたビューと「インライン」であることを気にしない場合は、ビュー内に<script>宣言を配置できます。

150
Brad Christie

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>
12
Dilip Nannaware

以下のようなクライアント側の検証を行いながら、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>