.NETコア組立図(部分図)
1.背景
1.私たちは、ネットコアがなくなった今、ビューの使用部分に時間を過ぎての.Netの方法を使用しますが、我々はまだ道の.NETのコア、アセンブリのビューを使用します。
2.ビューの紹介
1.我々は、繰り返し部分を多重化するために、分離され得る表示します。
図2は、簡単に使用する、ビジネスロジック、パラメータの受け渡し、単一のテストを書くことができます。
3.複雑なページ、単純化しました。
3.コンポーネントの機能を表示するには
1. viewComponentは[viewComponent]プロパティを[viewComponent】装飾性の使用に由来する、またはコントローラが有する同じクラスから派生し、ビューコンポーネントは、公共、非ネストされた及び非抽象クラスでなければなりません。
ビューコンポーネント名が削除されViewComponentクラス名のサフィックスを指定ViewComponentAttribute.Nameプロパティを表示するために使用することができます。
2.完全コンストラクタ依存性注入コントローラは、この手段は、組立フィルタのビューで使用することができない、ライフサイクルに関与しないサポート
3.アセンブリInvokeAsync工程で定義され、返品IViewComponentResultの論理ビュー。直接アセンブリの発信者視点からではなく、結合モデルからのパラメータ。ビューは、アセンブリに直接リクエストを処理することはありません。典型的には、ビュー・コンポーネントを呼び出し、表示方法に渡すことにより、モデルビューを初期化します。
要するに、ビューコンポーネントは、以下の特性を有します。
- InvokeAsyncは、メソッドを定義し、IViewComponentResultを返します。
- そして、一般的にViewComponentが初期化されたモデルビューのメソッドを呼び出すことで、ビューに。
- HTTPではなく、メソッド呼び出し、なしモデルバインディングからのパラメータ。
- 直接アクセスHTTPエンドポイントとしてではない、それはあなたのコードからの呼び出し(通常はビュー)です。アセンブリの表示は要求を処理しません。
- 署名ではなく、現在の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