1. ホーム
  2. asp.net-mvc

[解決済み] ASP.NET MVC: @sectionの目的は何ですか?[クローズド]

2022-05-29 05:18:40

質問

ASP.NET MVCアプリケーションの場合、見たところ このブログの記事 . 作者のScottGuは @section を Index.cshtml に追加しています。

いくつか質問があるのですが(上記記事を参考に)。

  • Index.cshtmlは共有Viewなのでしょうか?
  • サンプルコードでは @section のコードを特定のビューで使用しています。なぜでしょうか?

どなたか、なぜ、そしていつ @section を使うのか、説明できますか?

どのように解決するのですか?

@section は、共有ビューからコンテンツがオーバーライドされるように定義するためのものです。基本的に、これは共有ビューを調整するための方法です (Web Formsのマスターページに似ています)。

あなたは Scott Gu の記事が非常に興味深いです。 .

編集:追加の質問明確化に基づき

その @RenderSection のような構文がShared Viewに入る。

<div id="sidebar">
    @RenderSection("Sidebar", required: false)
</div>

これをビューに配置するには @Section 構文で配置されます。

@section Sidebar{
    <!-- Content Here -->
}

MVC3+では、ビューに使用するLayoutファイルを直接定義するか、すべてのビューにデフォルトビューを用意することができます。

共通のビュー設定は、このようなデフォルトのレイアウトビューを定義する _ViewStart.cshtml で設定することができます。

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

また、このスニペットのように、index.cshtmlのように直接ファイルで使用するShared Viewを設定することもできます。

@{
    ViewBag.Title = "Corporate Homepage";
    ViewBag.BodyID = "page-home";
    Layout = "~/Views/Shared/_Layout2.cshtml";
}

この設定を調整する方法はいろいろありますが、さらにいくつかの方法は このSOの答え .