ASP.NET Core入門教程6、ASP.NET Core MVCビューレイアウト入門
5977 ワード
一、前言
1、この教程の主な内容 ASP.NET Core MVC(Razor)ビューマスターページチュートリアル ASP.NET Core MVC(Razor)Section付きビューマスターページチュートリアル ASP.NET Core MVC(Razor)ビューグローバルコード(_ViewStart.cshtml)チュートリアル 2、このチュートリアルの環境情報
ソフトウェア/環境
説明
オペレーティングシステム
Windows 10
SDK
2.1.401
ASP.NET Core
2.1.3
IDE
Visual Studio Code 1.28
エクスプローラ
Chrome 70
このコードは以下のコードで調整されます.https://github.com/ken-io/asp...
3、準備
VSコード自体はASPを提供する.NET Core MVCビューエンジン(Razor)の知能感知.幸いなことに、VS Code C#拡張は1.17.0バージョンからRazorビューエンジンのインテリジェントな感知をサポートしています.
そこで、VSコードC#拡張を最新バージョンにアップグレードします.
二、マスターページビューテンプレート
Webページには、ナビゲーションや下部など、共通のレイアウトがあります.これらのページの共通部分は、マスターページに入れる必要があります.これにより、各ページは、このページで完了する機能/内容に注目するだけでよい.開発効率が向上し、公共部分のメンテナンスコストも削減されます.
Razorビューエンジンは、ビューレイアウトの基礎として
1、レイアウトページをマスターページとして作成する
プロジェクトルートディレクトリ
通常、共通のRazorビューファイル名は_の先頭にある
2、サブページとしてビューを作成する
ビューの作成とマスターページの指定(Layout)マスターページ名 を指定マスターページのフルパスを指定
以上の2つの方式はいずれかを選択すればよい
アクションの変更
調整
3、アクセステスト
プロジェクトを開始し、
三、クリップ付きマスターページビューテンプレート
マスターページを通じて、いくつかのページの内容や機能を簡単に共有することができます.ただし、一部の特殊なサブページでは、サブページのみを固定した場所に表示するのではなく、親ページの一部の内容を書き換える必要がある場合があります.
Razorビューエンジンは、
1、Sectionの定義とロード
Section定義
Section定義はサブページでのみ有効です.Section定義の例:
Sectionロード
マスターページでは、
RenderSectionは、親ページでのみ有効です強制ロード サブページに定義があれば をロードする.サブページに定義があればロードし、なければデフォルトコンテンツ が表示される.
2、Section使用例
コントローラとアクションの作成
Section付きビューの作成
テンプレート・ページの変更
3、アクセステスト
プロジェクトを開始し、ブラウザによるアクセステスト:
四、ビュー提示前のグローバルコード
Razorビューエンジンは、ビュー表示前にコードを実行するエントリを提供します.このエントリは、グローバルビューレンダリング前に実行されるコードを定義し、フォルダの下のビューレンダリング前に実行されるコードを定義する/Views/_ViewStart.cshtml /Views/Home/_ViewStart.cshtml
2つの
グローバルコードの例
ここでは、グローバルコードを使用して、すべてのビューのマスターページを
その後、プロジェクトを開始し、
ローカルグローバルコードの例
ここでは、
プロジェクトを開始し、
五、備考
1、付録本明細書のコード例 https://github.com/ken-io/asp... 本明細書では を参照
https://docs.microsoft.com/zh...
この記事は、私の独立したブログに掲載されています.https://ken.io/note/asp.net-c...
1、この教程の主な内容
ソフトウェア/環境
説明
オペレーティングシステム
Windows 10
SDK
2.1.401
ASP.NET Core
2.1.3
IDE
Visual Studio Code 1.28
エクスプローラ
Chrome 70
このコードは以下のコードで調整されます.https://github.com/ken-io/asp...
3、準備
VSコード自体はASPを提供する.NET Core MVCビューエンジン(Razor)の知能感知.幸いなことに、VS Code C#拡張は1.17.0バージョンからRazorビューエンジンのインテリジェントな感知をサポートしています.
そこで、VSコードC#拡張を最新バージョンにアップグレードします.
二、マスターページビューテンプレート
Webページには、ナビゲーションや下部など、共通のレイアウトがあります.これらのページの共通部分は、マスターページに入れる必要があります.これにより、各ページは、このページで完了する機能/内容に注目するだけでよい.開発効率が向上し、公共部分のメンテナンスコストも削減されます.
Razorビューエンジンは、ビューレイアウトの基礎として
Layout
の概念を提供し、ビュー内で別のビューをそのビューのマスターとして参照することができます.1、レイアウトページをマスターページとして作成する
プロジェクトルートディレクトリ
Views
フォルダにサブディレクトリShared
を作成し、Shared
ディレクトリにマスターページ_Layout.cshtml
を作成します.通常、共通のRazorビューファイル名は_の先頭にある
@ViewBag.Title - Ken.Tutorial
Ken.Tutorial
@RenderBody()
@
ViewBag.Titleは、テンプレートが現在適用されているビューカスタムタイトル@
RenderBody(`は、マスターが現在適用されているビューをレンダリングし、現在位置に塗りつぶすことを示す.2、サブページとしてビューを作成する
ビューの作成とマスターページの指定(Layout)
/Views/Home
に新規作成されたファイルIndex.cshtml
ページには、以下の方法でマスターページを指定できます.@{
Layout = "_Layout";
}
@{
Layout = " /Views/Shared/_Layout.cshtml";
}
以上の2つの方式はいずれかを選択すればよい
@{
Layout = "_Layout";
}
@ViewBag.Title
@ViewBag.Message
アクションの変更
調整
HomeController.cs
でAction:Index()
、ビューでMessageを出力public IActionResult Index()
{
ViewBag.Title = "Home";
ViewBag.Message = "Hello World ! -ken.io";
return View();
}
3、アクセステスト
プロジェクトを開始し、
/
または/home/index
にアクセスすると、次のように表示されます.三、クリップ付きマスターページビューテンプレート
マスターページを通じて、いくつかのページの内容や機能を簡単に共有することができます.ただし、一部の特殊なサブページでは、サブページのみを固定した場所に表示するのではなく、親ページの一部の内容を書き換える必要がある場合があります.
Razorビューエンジンは、
Section
の概念を提供し、ビューでSection
を定義し、その後、マスタービューでRenderSection
を介してビュー定義のSection
をロードすることができる.1、Sectionの定義とロード
Section定義
Section定義はサブページでのみ有効です.Section定義の例:
@section test{
Section Content
}
@
section:Sectionを定義するキーワードtest:SectionName、命名規則はC#変数名と同じで、アルファベットまたは下線の先頭の後ろにアルファベット、下線、数値を付けることができますSectionロード
マスターページでは、
@RenderSection()
メソッドでサブページで定義されたSectionをロードできます.RenderSectionは、親ページでのみ有効です
@RenderSection("test")
@RenderSection("test", false)
@if(IsSectionDefined("test"))
{
RenderSection("test");
}
else
{
Layout Content
}
2、Section使用例
コントローラとアクションの作成
Controllers
フォルダにLayoutController.cs
を作成using System;
using Microsoft.AspNetCore.Mvc;
namespace Ken.Tutorial.Web.Controllers
{
public class LayoutController : Controller
{
public IActionResult SectionDemo()
{
return View();
}
}
}
Section付きビューの作成
Views
フォルダにLayout
フォルダを作成し、ビューファイルを作成します.SectionDemo.cshtml
@{
Layout = "_Layout";
ViewBag.Title = "SectionDemo";
}
@ViewBag.Title
Section Demo by ken.io
@section footer{
Section Footer
}
テンプレート・ページの変更
_Layout.cshtml
を修正してSectionロードを追加
@ViewBag.Title - Ken.Tutorial
Ken.Tutorial
@RenderBody()
3、アクセステスト
プロジェクトを開始し、ブラウザによるアクセステスト:
/
/layout/sectiondemo
/
にアクセスすると、次のように表示されます./layout/sectiondemo
にアクセスすると、次のように表示されます.四、ビュー提示前のグローバルコード
Razorビューエンジンは、ビュー表示前にコードを実行するエントリを提供します.このエントリは、グローバルビューレンダリング前に実行されるコードを定義し、フォルダの下のビューレンダリング前に実行されるコードを定義する
_ViewStart.cshtml
という約束されたファイルです.フルパスの例:2つの
_ViewStart.cshtml
ファイルが同時に存在する場合、/Views/_ViewStart.cshtml
の実行優先度は/Views/Home/_ViewStart.cshtml
より高いグローバルコードの例
Views
フォルダの下にビューファイル_ViewStart.cshtml
を作成する@{
Layout = "_Layout";
}
ここでは、グローバルコードを使用して、すべてのビューのマスターページを
_Layout
に指定します.これにより、ビューサブページでマスターページを1つずつ作成する必要はありません.Index.cshtml
で指定されたLayoutをコメントしたら@{
//Layout = "_Layout";
}
その後、プロジェクトを開始し、
/
にアクセスします.ローカルグローバルコードの例
/Views/Home
フォルダの下にビューファイル_ViewStart.cshtml
を作成する@{
Layout = null;
}
ここでは、
/Views/Home
フォルダの下にあるすべてのビューのマスターページをnull
として指定し、デフォルトではマスターページは参照されません.プロジェクトを開始し、
/
にアクセスすると、次のようになります.五、備考
1、付録
https://docs.microsoft.com/zh...
この記事は、私の独立したブログに掲載されています.https://ken.io/note/asp.net-c...