.NETコア組立図(部分図)

.NETコア組立図(部分図)

1.背景

     1.私たちは、ネットコアがなくなった今、ビューの使用部分に時間を過ぎての.Netの方法を使用しますが、我々はまだ道の.NETのコア、アセンブリのビューを使用します。

2.ビューの紹介

   1.我々は、繰り返し部分を多重化するために、分離され得る表示します。

    図2は、簡単に使用する、ビジネスロジック、パラメータの受け渡し、単一のテストを書くことができます。

    3.複雑なページ、単純化しました。

3.コンポーネントの機能を表示するには

   1. viewComponentは[viewComponent]プロパティを[viewComponent】装飾性の使用に由来する、またはコントローラが有する同じクラスから派生し、ビューコンポーネントは、公共、非ネストされた及び非抽象クラスでなければなりません。

      ビューコンポーネント名が削除されViewComponentクラス名のサフィックスを指定ViewComponentAttribute.Nameプロパティを表示するために使用することができます。

   2.完全コンストラクタ依存性注入コントローラは、この手段は、組立フィルタのビューで使用することができない、ライフサイクルに関与しないサポート

   3.アセンブリInvokeAsync工程で定義され、返品IViewComponentResultの論理ビュー。直接アセンブリの発信者視点からではなく、結合モデルからのパラメータ。ビューは、アセンブリに直接リクエストを処理することはありません。典型的には、ビュー・コンポーネントを呼び出し、表示方法に渡すことにより、モデルビューを初期化します。

    要するに、ビューコンポーネントは、以下の特性を有します。

  1.   InvokeAsyncは、メソッドを定義し、IViewComponentResultを返します。
  2.  そして、一般的にViewComponentが初期化されたモデルビューのメソッドを呼び出すことで、ビューに。
  3.  HTTPではなく、メソッド呼び出し、なしモデルバインディングからのパラメータ。
  4. 直接アクセスHTTPエンドポイントとしてではない、それはあなたのコードからの呼び出し(通常はビュー)です。アセンブリの表示は要求を処理しません。
  5. 署名ではなく、現在のHTTPリクエストの任意の詳細よりも、過負荷。

4.ビュールートアセンブリ

 

     /Views/Home/Components/Header/Index.cshtml

     /Views/Shared/Components/Header/Index.cshtml

     /Pages/Shared/Components/Header/Index.cshtml

     1.ルールだけ下に、3箇所に配置することができます。

  ビュー/ <コントローラ名> /コンポーネント/ <view_component_name> / <VIEW_NAME>

  閲覧/共有/コンポーネント/ <view_component_name> / <VIEW_NAME>

       ページ/共有/コンポーネント/ <view_component_name> / <VIEW_NAME>

 

これは間違って、私は右の場所であることが示唆されました。

使用したビューコンポーネント

      1.背景コード

    Componentクラスは、プロジェクトのフォルダ内のファイルを表示することができます。【ViewComponent】特性は、アセンブリ参照のビューの名前を変更することができます。

[ViewComponent(NAME = " ヘッダ" )]
     パブリック パーシャル クラスHeaderController:ViewComponent
    {
        //调用异步方法
        public async Task<IViewComponentResult> InvokeAsync(int id) {
            //返回参数,Inex是自己定义的视图名称,如果没有就是default
            //第二个是返回参数,和之前的view()的参数一样。
            return  View("Index",id);
        }
    }

    继承于ViewComponent返回IViewComponentResult。

         还可以这样

        /// <summary>
        /// 控制器调用
        /// </summary>
        /// <returns></returns>
        public IActionResult Info() {
            return ViewComponent("Header", 5);
        }

        2.前台代码

@await Component.InvokeAsync("Header", new { id=123})

效果

 

 

 

 

参考代码:https://gitee.com/D_C_L/Test_ViewComponent.git

参考地址: https://www.cnblogs.com/afei-24/p/11317885.html

 

 

 

おすすめ

転載: www.cnblogs.com/chenxi001/p/11979362.html