2012-08-27 8 views
5

私はASP.NET MVCに登録ページを作成しており、条件の数(データベースから取得)に応じて変更されるフィールドのリストを作成しています。多態MVCビュー

これらのフィールドを、DBが更新されるたびにコードが変更されずにビューに表示するには、どのような方法が最適と考えられますか。

"Name、DataType"でDictionaryを作成してから、リストを繰り返して、それぞれの名前の新しい入力タイプを入れます(正しいエディタを得るためにデータ型のスイッチを使用します)。しかし、それは古き良きのように、.NET MVCシステムの利点(検証、デフォルト値、特定のコンテンツ用のカスタマイズされたエディタなど)の利点を完全に利用していないようです。

この問題を処理するために.NETでおそらく認識していないアプローチがありますか?

+0

MVCの観点からは、「ビューにはどのようなタイプのロジックも含めてはいけません」という理由から、各シナリオごとに異なるビューを作成するのが最適です。しかし、私はこれがあなたが求めていた答えのタイプだとは思わないので、私は答えとしてこれを掲示するつもりはありません。あなたはあなたが習得しようとしていることとその理由についてさらに詳しく説明できますか?これはあなたの問題(あなたが申し訳ありませんが)に、より具体的な解決策を見つけるのに役立ちます。 – Pluc

+0

@Plucは基本的にイベント登録システムで、各 "Client"はエンドユーザーが登録を許可される前に入力するのに必要な独自のカスタムフィールドを指定します。クライアントエントリを制御しないため、シナリオごとにビューを作成することが困難です:( –

+0

フィールドは複数のタイプと任意の数量にすることができますか? – Pluc

答えて

6

私は非常に似た問題を抱えていました。転記はhereです。

いいえ、ASP.NET MVCに多態性ビューはありません。少なくとも、スタックオーバーフローについては、何トンもの実験を行い、この質問にさまざまな方法で何度も働かせることができませんでした。

ビューで定義されている@modelのタイプは、モデルの実際のタイプではなく、ビュー内のタイプを定義します(インターフェースクラスまたは抽象クラスまたはベースクラスの場合、すべての美しい装飾は、タイプがモデルタイプによって定義されるため動作しません)。

申し訳ありませんが、あなたの質問に肯定的な答えはありません。私はエディタテンプレートの集まりを書いてしまいました。エディタテンプレートはモデルタイプによってのみ異なりました。巨大なDRY違反ですが、これはASP MVCの作業方法、残念ながらです。

希望すると、時間を節約できます。

+0

この答えをありがとう。私は今、ASP.NET MVCのオブジェクト指向の欠陥の性質に対して頭を鳴らすことをやめることができます。あなたが言うこと:ここでは、ASP.NET MVC – Geeb

+0

で多相性のビューはありません。それは多くの時間が費やされているので、他の人にそれを少し保存しようとしていた –