質問: 私が解決しようとしているあなたの平均的な単一のViewcomponentよりも少し複雑な要件があります。 .NET Core 2.1とEntity Frameworkを使用して、Razor PagesでWebアプリケーションを構築しました。 私はさまざまなフォーマットで情報を入力および表示するために使用するタブ付きビューを持っているページの1つに、それぞれが表示用と表示用に1つずつ複数のモデルを使用するのでデータをキャプチャします。タブを変更したときにページ全体が再ロードされるので、部分ビューを使用しても問題はありませんでした。理想的ではなく、かなり遅くなりました。 Viewcomponentsと入力すると、1つのモデルを使用して正常に動作する単純なviewcomponentを取得できますが、2〜3のモデルがインジェクション/バインドされている他のタブでは、これを実装する方法が見つかりません。私はフレームワークを多用しすぎていませんか。 NB。私はCSharpとJavascriptを使わずにかみそりのページだけを使ってこれをやろうとしています。これでも可能ですか、それともタオルに入れてAngular-MVCに移動する必要がありますか。
回答: あなたに利用可能ないくつかのオプションがあります。正直なところ、あなたの最善の道はラッパークラス、本質的にはモデルのモデルです。実際に必要な個々のモデルごとに、プロパティを持つクラスを作成するだけです。これにより、これをページのモデルとして使用できますが、それでもタブの個々のモデルすべてにアクセスできます。 ビューコンポーネントは有効なアプローチですが、2つのことを実現する必要があります。 1. ビューコンポーネントのレンダリングは完全に自己完結型です。言い換えれば、あなたのメインアクション/ビューは基本的にスタブになり、実際には何もしません。代わりに、モデルを構築して各タブのビューに渡すためのすべてのロジックが、そのタブに対応するビューコンポーネントに含まれています。 2. ビューコンポーネントは、HTMLをページにレンダリングすることだけを目的としています。ビューコンポーネントに投稿することはできません。あなたはまだあなたの実際の主な行動に投稿しているので、問題のタブがしていることは何でも処理するようにそれを設定する必要があるでしょう。 最後に、タブを変更するたびにサーバーにアクセスしたくない場合は、少なくともタブインターフェースにJavaScriptが必要になります。入れたままでタブを切り替えることは、JavaScriptでのみ可能な動的機能です。