ASP.NET Core入門教程7、ASP.NET Core MVC部門ビュー入門


一、前言
1、この教程の主な内容
  • ASP.NET Core MVC(Razor)セクションビュー概要
  • ASP.NET Core MVC(Razor)セクションビュー基礎チュートリアル
  • ASP.NET Core MVC(Razor)強タイプ分割ビューチュートリアル
  • 2、このチュートリアルの環境情報
    ソフトウェア/環境
    説明
    オペレーティングシステム
    Windows 10
    SDK
    2.1.401
    ASP.NET Core
    2.1.3
    IDE
    Visual Studio Code 1.30
    エクスプローラ
    Chrome 70
    このコードは以下のコードで調整されます.https://github.com/ken-io/asp...
    3、準備
    VSコード自体はASPを提供する.NET Core MVCビューエンジン(Razor)の知能感知.幸いなことに、VS Code C#拡張は1.17.0バージョンからRazorビューエンジンのインテリジェントな感知をサポートしています.
    そこで、VSコードC#拡張を最新バージョンにアップグレードします.
    また、特に説明するのは、VSコード1.30バージョンでソリューションビューのビューエントリがサイドツールバーに変更されたことです
    二、ASP.NET Core MVC(Razor)セクションビューの概要
    1、Razor支店ビューの概要
    Razorビューエンジンで定義できます.cshtmlファイルは、ユーザーに提示する必要があるコンテンツをレンダリングするために「ビュー」として使用されます.すべてのページが共有されている部分について、マスターページ(Layout)を定義して、ビューに共通の部分を継承することができます.一部の共通の部分が一部のページでしか使われていない場合、各ページで使用する必要はありません.あるいはこの共通のコンテンツはテンプレートとして複数回使用する必要があり、マスターページはこのような役割を果たすのに適していない.この場合、分割ビューを使用して実装できます.
    2、Razor部門別ビューの定義と参照
    Razor分割ビュー定義{{Razorぶんかつびゅー:ていぎ}}
    ビューと分割ビューは定義上本質的な違いはなく、いずれも作成される.cshtmlファイルはビューとして使用されますが、レンダリング時に分割ビューとしてレンダリング/ロードされます.
    前述したように、通常、共通のRazorビューファイル名は_最初は/Views/Sharedフォルダに配置され、分割ビューも例外ではありません.
    例:/Views/Shared/_PartialViewTest.cshtml分割ビューがコントローラから返されたビューでのみ参照される場合は、コントローラに対応するビューディレクトリを作成することもできます.
    例:/Views/Home/_PartialViewTest.cshtmlRazor分割ビューリファレンス
    //    
    
    @Html.Partial("_PartialViewTest")
    
    
    //    (    )
    
    @await Html.PartialAsync("_PartialViewTest")

    マイクロソフトは、同期ロードでプログラムのデッドロックが発生する可能性があるため、非同期ロードの使用を推奨しています.
    非同期方式を使用しない場合、コンパイラからwarning MVC 1000:Use of IHtmlHelperという警告が受ける.Partial may result in application deadlocks. Consider using Tag Helper or IHtmlHelper.PartialAsync.
    パフォーマンスが非常に気になる場合は、Html.RenderPartialAsyncを使用して分割ビューを表示することもできます.この方法では、IHtmlContentオブジェクトに戻されることなく、分割ビューの内容が直接表示されます.
    @{
        await Html.RenderPartialAsync("_PartialViewTest");
    }
    Html.RenderPartialAsyncは何も返さないので、Razor文ブロックで呼び出す必要があります.
    Razor分割ビューの検索順序はビューと同じです.
  • Views/[ControllerName]/[PartialViewName].cshtml
  • Views/Shared/[PartialViewName].cshtml

  • もちろん、完全なパスを直接指定することもできます.たとえば、次のようにします.
    @await Html.PartialAsync("/Views/Home/_PartialViewTest.cshtml")

    三、Razor支店ビューの基礎使用
    1、部門別ビューの定義/Views/Sharedディレクトリの下でビュー'_を作成DateTimeInfo.cshtml'
        :@DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff") 
        :@DateTime.Now.DayOfWeek

    2、ビューを作成し、分割ビューを参照する/Viewsディレクトリの下にディレクトリPartialを作成し、/Views/Partialディレクトリの下にファイルDemo.cshtmlを作成します.
    @{
        ViewBag.Title = "PartialView Demo";
    }
    

    @ViewBag.Title

    PartialView Demo by ken.io

    @Html.Partial("_DateTimeInfo")
    @await Html.PartialAsync("_DateTimeInfo")

    3、コントローラの作成/Controllersディレクトリの下にPartialController.csを作成し、対応するアクションを作成します.
    using System;
    using Microsoft.AspNetCore.Mvc;
    
    namespace Ken.Tutorial.Web.Controllers
    {
        public class PartialController : Controller
        {
            public IActionResult Demo()
            {
                return View();
            }
        }
    }
    

    4、アクセステスト
    プロジェクトを開始し、/partial/demoにアクセスすると、
    四、パラメータ付きRazor分割ビュー
    1、ビューオブジェクトの準備
    プロジェクトルートディレクトリにモデルディレクトリModelsを作成し、以下にオブジェクトNoteViewModel.csを作成します.
    using System;
    
    namespace Ken.Tutorial.Web.Models
    {
        public class NoteViewModel
        {
            public string Title { get; set; }
    
            public DateTime PublishTime { get; set; }
    
            public string Body { get; set; }
        }
    }

    2、部門別ビューの定義/Views/Sharedディレクトリの下でビュー'_を作成NoteInfo.cshtml'
    @model Ken.Tutorial.Web.Models.NoteViewModel;
    
    

    @Model.Title

    @Model.PublishTime.ToString("yyyy-MM-dd")

    @Model.Body


    実際には、強力なタイプの分割ビューを作成します:-D
    3、ビューを作成し、分割ビューを参照する/Views/Partialディレクトリの下にファイルDemoWithParams.cshtmlを作成
    @using Ken.Tutorial.Web.Models;
    @{
        ViewBag.Title = "PartialView With Params Demo";
    }
    

    @ViewBag.Title

    PartialView With Params Demo by ken.io

    @await Html.PartialAsync("_NoteInfo", new NoteViewModel() { Title = " ", PublishTime = DateTime.Now, Body = " " })

    4、コントローラに対応アクションを書く
    コントローラPartialController.csには、以下のアクションが追加される.
    public IActionResult DemoWithParams()
    {
        return View();
    }

    5、アクセステスト
    プロジェクトを開始し、/partial/demowithparamsにアクセスすると、
    文章リストページであれば、使いやすくなります.
    五、備考
    1、付録
  • 本明細書のコード例
  • https://github.com/ken-io/asp...
  • 本明細書では
  • を参照
    https://docs.microsoft.com/zh...
    この記事は、私の独立したブログに掲載されています.https://ken.io/note/asp.net-c...