2016-04-14 12 views
3

Viewコンポーネント内でモデルバインダーを呼び出す方法を探しています。 asp.netコアの組み込み機能を使用する方が好きですが、これはViewコンポーネント自体ではなく、コントローラ内でのみ使用できます。その問題を解決する方法はありますか?Asp.net coreコンポーネントのモデルバインディングを表示

+1

あなたが提案しているものが奇妙です。 MVCパターンでは、コントローラレイヤですべてのデータバインディングを作成する必要があります。そのため、ビューレイヤに到達すると、ビジネスクラスではなくデータ構造のみを処理する必要があります。あなたの必要性をより深く説明して、何が必要か、どのように到達できるかを理解することができます。 – Bardo

+1

ビューコンポーネントを使用して再利用可能なウィジェット/ UIアイテム(例:メニューバーなど)を構築します。実際のアクションメソッドにモデルバインディングを残します。実際のアクションメソッドに投稿されるビューコンポーネントビューのコード内にフォームを作成することはできます。 – Shyju

+0

私はそれがMVCによって行われるべきであるexaclyではないことを知っていますが、その場合、この問題で対処する必要があります。 1つのエントリポイント(コントローラ内のアクション)があり、パラメータに基づいて、どのビューコンポーネントを呼び出すべきかを決定できます(権限でDBベースから取得した情報、渡されたパラメータなど) –

答えて

3

私が知っている限り、これは不可能です。コントローラのアクションが呼び出される前に、フレームワークのライフサイクルでモデルバインディングがさらに発生します。

モデルバインディングに関係しない他の潜在的なソリューションがあるかどうかを確認するために、なぜこのコードを表示する必要があるのか​​、本当に興味があります。

3

View Componentsドキュメントによると:

ビューコンポーネントの結合モデルを使用していない、とだけそれを呼び出すときに提供したデータに依存します。


しかし、あなたはあなたのViewComponentにオブジェクト/パラメータとしてモデルを渡すことができます。

@await Component.InvokeAsync("PriorityList", MyModel) 

または

@await Component.InvokeAsync("PriorityList", new { maxPriority = 2, isDone = false }) 


何を達成したいですか?

関連する問題