113

私はASPMVCを初めて使用し、ASPMVC4ベータ版チュートリアルhttp://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnetを利用しています。 -mvc-4

答えが見つからない、またはプログラミングの経験があまりないというエラーが発生したため、チュートリアルでこれを修正し始める場所すらわかりません。私はあなたが提供できるどんな助けにも感謝します。

「コントローラーからモデルのデータにアクセスする」セクションにいます。チュートリアルの一部としてムービーを作成しようとすると、このエラーが発生します。「新規作成」リンクをクリックすると、次のエラーが発生します。

次のセクションは定義されていますが、レイアウトページ用にレンダリングされていません> "〜/ Views / Shared / _Layout.cshtml":"スクリプト"

Visual Studio Expressを使用するのではなく、Visual Studio 2012 RCをダウンロードすることを選択しました(それが私の問題の根本的な原因であるかどうかはわかりません。

これに答えるためにコードを含める必要があるかもしれませんが、どのコードを含めるべきかわかりません。含める必要のあるコードがあれば教えてください。質問に追加させていただきます。

ありがとうございました、

4

19 に答える 19

161

これは、マスターLayout.cshtmlでセクションを定義したが、そのセクションのセクションをビューに含めていないことを意味します。

_Layout.cshtmlに次のようなものがある場合:

@RenderSection("scripts")

次に、そのレイアウトを使用するすべてのビューに、同じ名前のを含める必要@sectionがあります(セクションの内容が空の場合でも)。

@{
    ViewBag.Title = "Title";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
@section scripts{
    // Add something here
}

別の方法として、requiredをfalseに設定すると、すべてのビューにセクションを追加する必要がなくなります。

@RenderSection("scripts", required: false)

@RenderSectionまたは、ifブロックでラップすることもできます。

@if (IsSectionDefined("scripts"))
{
    RenderSection("scripts");
}
于 2012-06-10T18:28:18.437 に答える
28

私は3つのレベルのケースを持っていました'la_ MainLayout.cshtml <--- _ Middle.cshtml <--- Page.cshtml。このようにやっているのに:

_MainLayout.cshtml

<head>
   @RenderSection("head", false)
</head>

_Middle.cshtml

@section head {
    @RenderSection("head")
}

およびPage.cshtmlでの定義

@section head {
   ***content***
}

それでもエラーが発生します

次のセクションは定義されていますが、レイアウトページ「〜/ Views / Shared / _Middle.cshtml」:「head」にはレンダリングされていません。

結局のところ、エラーはMiddle.cshtmlが/Views/_ViewStart.cshtmlに依存して 親レイアウトを解決することでした。Middle.cshtmlでこれを明示的に定義することにより、問題は解決されました。

@{
Layout = "~/Views/_Shared/_MainLayout.cshtml";
}

これが設計によるものなのか、MVC 4のバグなのかを判断できません-とにかく、問題は解決されました:)

于 2012-09-12T13:14:21.953 に答える
28

また、_Layout.cshtmlまたはに次の行を追加できます_Layout.Mobile.cshtml

@RenderSection("scripts", required: false)
于 2012-09-27T14:27:52.980 に答える
15

提案された解決策が問題を解決しなかった場合、受け入れられた回答が受け入れられた理由がわかりません。実際には、このトピックに関連する2つの関連する問題が存在する可能性があります。

第1号

マスターページ(例_Layout.cshtml)にはセクションが定義されており、必須ですが、継承ビューはそれを実装していません。例えば、

レイアウトテンプレート

<body>
    @* Visible only to admin users *@
    <div id="option_box"> 
        @* this section is required due to the absence of the second parameter *@
        @RenderSection("OptionBox") 
    </div>
</body>

継承ビュー

コードを表示する必要はありません。ビューにの実装がない@section OptionBox {}ことを考慮してください。

問題#1のエラー

Section not defined: "OptionBox ".

第2号

マスターページ(例_Layout.cshtml)にはセクションが定義されており、それは必須であり、継承ビューそれを実装しました。ただし、実装ビューには、そのマスターページ(のいずれか)で定義されていないscript追加のセクションがあります。

レイアウトテンプレート

same as above

継承ビュー

<div>
  <p>Looks like the Lakers can still make it to the playoffs</p>
</div>
@section OptionBox {
<a href"">Go and reserve playoff tickets now</a>
}
@section StatsBox {
<ul>
    <li>1. San Antonio</li>
    <li>8. L. A. Lakers</li>
</ul>
}

問題#2のエラー

The following sections have been defined but have not been rendered for the layout page "~/Views/Shared/_Layout.cshtml": "StatsBox"

OPの問題は問題#2に類似しており、受け入れられた回答は問題#1に対するものです。

于 2013-03-22T15:35:07.830 に答える
10

私たちのソリューションは他のすべてのソリューションとは十分に異なっていたと思うので、ここで文書化します。

メインレイアウト、中間レイアウト、そして最終的なアクションページのレンダリングをセットアップしました。Main.cshtml <-Config.cshtml <-Action.cshtml

web.configcustomErrors='On/RemoteOnly'でカスタムエラーが発生し、例外が発生せず、Application_Error呼び出されなかった場合のみ。Layout = nullError.cshtmlでこれをオンラインでキャッチできました。例外は質問のとおりで、スクリプトセクションがありませんでした。

Main.cshtml(required:falseを使用)で定義されており、Action.cshtmlにはスクリプトセクションに書き込まれるものがありませんでした。

@section scripts { @RenderSection("scripts", false) }解決策は、Config.cshtmlに追加することでした。

于 2014-02-03T09:09:12.387 に答える
9

Visual Studioの一部のバージョンを使用して新しいモデルを作成すると、Viewファイル間に不一致があるようです。新しいVS2013Community Editionを使用し、 http: //www.w3schools.com/aspnet/mvc_app.aspでW3Schoolsチュートリアルをウォークスルーしてこの問題に遭遇しましたが、上記のコメントは、チュートリアルの方向またはVSの単一バージョン。

削除するだけでエラーメッセージを消すことができるのは事実です。

@Scripts.Render("~/bundles/jqueryval")

VisualStudioによって自動生成された作成/編集レイアウトからの行。

しかし、その解決策は根本的な原因に対処したり、チュートリアルを読み終える以上のことを行うのに適した場所にあなたを残したりするものではありません。実際のアプリケーションの開発のある時点(おそらくかなり早い段階)で、コメントアウトソリューションがアプリから削除するjquery検証コードにアクセスする必要があります。

VSを使用して新しいモデルを作成すると、作成、削除、詳細、編集、およびインデックスの5つのビューファイルのセットも作成されます。これらのビューのうちの2つ、作成と編集は、ユーザーがモデルの基礎となるデータベースレコードのフィールドのデータを追加/編集できるようにすることを目的としています。実際のアプリのこれらのビューの場合、データベースにレコードを保存する前に、jquery検証ライブラリを使用してある程度のデータ検証を行うことをお勧めします。そのため、VSは次の行を追加します

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

これらの2つのビューの下部にあり、他のビューにはありません。自動生成されたコードは、検証ライブラリをこれらのビューで使用できるようにしようとしていますが、他のビューでは使用できません。

エラーが発生するのは、VSが対応する行を共有_Layout.cshtmlファイルに追加しないか、上記の1つの回答を参照して追加しますが、コメントアウトしたままにするためです。この行は

@RenderSection("scripts", required: false)

一部のビューに(作成および編集のように)スクリプトセクションがある場合は、レイアウトにRenderSectionコマンドを埋め込む必要があります。一部のスクリプトにセクションがあり、一部にない場合(Delete、Details、およびIndexにはないため)、RenderSectionコマンドにはrequired: falseパラメーターが必要です。

したがって、チュートリアルを読み終える以上のことをしたい場合の最善の解決策は、編集ビューと作成ビューからコードを削除せずに、ステートメントを_Layout.cshtmlに追加することです。

PSここでは、必要なものが「バンドル」にあり、requireステートメントがプロジェクトに存在しないバンドルフォルダーにファイルを含めようとしているように見えるのは少し混乱しています。ただし、デバッグビルドとチュートリアルの場合、バンドルされたファイルは一度に1つずつ含まれるため、これは関係ありません。参照:http ://www.asp.net/mvc/overview/performance/bundling-and-minificationここで問題になっているコードは、ページの約3分の2で簡単に説明されています。

于 2014-11-26T15:14:45.607 に答える
8

これは基本的に、_Layout.cshtmlに次のものがない 場合に発生します。

@RenderSection("scripts", required: false)

またはと

@RenderSection("scripts")  

それなし

required: false

したがって、_Layout.cshtmlに@RenderSection( "scripts"、required:false)を追加するだけで、Kendouiで生成されたプロジェクト を使用する開発者向けに特別に機能します。

于 2013-07-25T09:36:21.307 に答える
3

VisualStudio2012でASP.NETMVC4チュートリアルを実行しているときに、「コントローラーからのモデルのデータへのアクセス」セクションで同じエラーが発生しました。修正は非常に簡単です。

VisualStudio2012で共有フォルダーの_Layout.cshtmlドキュメント内に新しいASP.NETMVC4 Webアプリケーションを作成すると、「スクリプト」セクションがコメント化されます。

    @*@RenderSection("scripts", required: false)*@

行のコメントを外すだけで、サンプルコードが機能するはずです。

    @RenderSection("scripts", required: false)
于 2013-04-01T16:00:14.817 に答える
2

以下のように「_Layout.cshtml」を変更しましたが、動作します。.Net Core 3.1BlazorServerモジュールIDの問題。

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
    <title>@ViewBag.Title</title>
    <link href="~/css/bootstrap/bootstrap.min.css" rel="stylesheet" />
    <link href="~/css/app.css" rel="stylesheet" />
    @RenderSection("Scripts", required: false)


</head>

<body>
    <div class="main">
        <div class="content px-4">


            @RenderBody()
        </div>
    </div>
</body>

</html>


@section Scripts {    
    
}
于 2020-09-22T12:44:58.033 に答える
2

そのエラーが発生しました。背後にある理由は、スクリプトセクションをレンダリングする必要があるためです。しかし、_Layoutではすでにそのままでした。

@RenderSection("Scripts", required: false)

また、ページの下部にセクションを追加する前に機能しました。

私の場合の理由は、スペルの単純なタイプミスでしたScripts

@section Scripts{
<script src="~/js/myScript.js"></script>
}
于 2021-04-15T14:58:08.983 に答える
1

MVCの初心者向けのチュートリアルを実装しているときに、同じ問題が発生します。layout.cshtmlファイルの@RenderSectionを変更するためのさまざまな提案がありましたが、使用していません。

よく検索しましたが、(View / Edit.cshtml)やその他のcshtmlファイルで生成されたスクリプトタグがレンダリングされていないことがわかりました

**@section Scripts {
@Scripts.Render("~/bundles/jqueryval")

} **

そこで、これらの行を削除すると、アプリケーションがスムーズに実行され始めます。

于 2014-09-11T07:14:38.403 に答える
1

@sectionを含む部分ビューを参照している_Layoutファイルの@section内からセクションをレンダリングしているように感じます。つまり、@section内に@sectionをネストしました。_Layoutファイルで、rendersectionの周りの@sectionを削除します。

于 2016-05-11T00:49:16.920 に答える
1

スムーズに実行されている**@sectionスクリプトについてもコメントしました。:)

于 2020-02-14T05:17:38.070 に答える
0

Webでエラーを検索し、このページにアクセスしました。Visual Studio 2015を使用していますが、これは私の最初のMVCプロジェクトです。

レンダリングセクションの前に@記号がない場合、同じエラーが発生します。これを将来の初心者のために共有したいと思います。

 @RenderSection("headscripts", required: false)
于 2015-07-28T07:32:45.890 に答える
0

用語「」のスペルと大文字/小文字を確認してください

@RenderSection( "name"、required:false)と書くときはいつでも、かみそりのビューにセクション@section name {}が含まれていることを確認してください。したがって、用語「」の大文字と小文字を確認してください。この場合の正しいのは「スクリプト」です。

于 2015-09-10T16:33:02.020 に答える
0

ビューでスクリプトセクションを使用する正しいスペルを入力したことを確認してください

正しいのは

@section scripts{ //your script here}

入力した場合、@section script{ //your script here}これは間違っています。

于 2016-09-11T10:21:41.763 に答える
0

私は以下を使用してこの問題を解決しました、

@await Html.PartialAsync("_ValidationScriptsPartial")
于 2019-03-20T14:42:02.170 に答える
0

私にとって問題は私の_Layout.cshtmlにありました私は条件の中にRenderSectionを持っています

 @if (theme == "Red" || theme == "Green")
  {
       <div>
       @RenderSection("Footer", false)
       </div>
   }

そして私の子供の見解では、それは無条件でした

@section Footer{
        <div>
            @Html.AwButton("Reject", "Reject")
            @Html.AwSubmit("Ok", "Ok")
        </div>
    }

テーマに関係なく、子供はフッターを追加していました。しかし、親では、テーマが赤または緑でない場合、フッターが追加されておらず、手に負えない例外がスローされていました。

于 2019-11-11T09:53:35.347 に答える
0

私にとっては、スクリプトの代わりにスクリプト を言ったのですが、デバッグ中にエラーとして表示されない理由がわかりません。

@section Script {}

于 2021-11-05T12:53:07.263 に答える