2011-06-24 15 views
2

私はカスタムのユーザープロファイル画面を実装しようとしています。asp.net mvc 3と動的ビュー生成

これは、ある種のメンバーシップ要素を持つウェブサイトのほとんどに見られるユーザーのための典型的なプロファイル画面です。

私の場合、画面は市場調査SAS製品の一部であるため、プロファイルに表示されるデータポイントは市場調査製品によって異なります。製品の司会者は、ポイントは、以下の情報を提供することにより、キャプチャする必要がどのようなデータを指定します:

フィールド名、表示名、フィールドタイプ(テキスト、数値、ラジオボタン、チェックボックスなど)、必要な...

私は、要求されたデータポイントのリストを反映するためにMVCビューを動的に生成する方法を理解しようとしています。できるだけ多くのMVCフレームワークを、HTMLを生成するための独自のヘルパーを作成することなく使用したいと思います。可能であれば、控えめな検証を使用したいと思います。

私はこの時点で最良のアプローチが何であるか混乱しています。

私が使用してみてください:

  • カスタムモデルバインダー
  • コード生成、実行時にモデルクラスを生成および表示
  • にバインドするだけで、HTMLに
を生成

他のアプローチ(jQueryテンプレート)、エディタテンプレート、一連の部分的なビューなどがありますか?

答えて

0

特定のアクションに対して何がサーバーに送信されるのかが不明な場合は、そのアクションのパラメータをFormCollectionにして、フィールドを反復処理することができます。その時点で、おそらくフィールドの各タイプをキーとしてそのフィールドの名前を使用して、大文字と小文字を区別して処理する必要があります。あなたのビューは、あなたのDataPoint秒を繰り返す必要がありその後

public class DataPoint 
{ 
    public string FieldName { get; set; } 
    public string DisplayName { get; set; } 
    public object Value { get; set; } 
} 

:、ちょうどクラスの各フィールドのデータをラップし、ビューにのようなものがアイテムを送信するために

EditorFor()メソッドは、正しい入力タイプを生成するために、Valueの型チェックを処理します。他の厄介な部分は、その入力の名前としてFieldNameを取得することだけです。

クラスをランタイムとしてビルドすることは、あまりにも複雑すぎないものに対しては、最初は大量の作業になります。カスタムModelBinderは、あなたの問題の根である、あなたがバインディングしているモデルを知らないかぎりあなたを助けません。

+0

私はすでに説明したものと同様のクラスにデータポイントを持っています。私は、データポイントをHTMLにレンダリングする方法を理解しようとしているので、javascriptの邪魔にならない検証の完全な利点が得られます。あたかもモデルクラスコードファイルを生成し、データアノテーション属性でプロパティを装飾するかのように、データポイントごとに同じ情報をすべて収集しました。 –

0

あなたが先に行くと自分の行動をレンダリングするには、その後の名前のdivで囲まれたすべてのフィールドを使用してビューをレイアウトできるコントローラが含むdiv要素のそれぞれに

.hidden 
    { 
     display:none; 
    } 

として定義された「隠された」クラスを追加していますあなたは必要ないフィールドですか?

もう1つの選択肢は、ビューを動的に構築するHTML拡張メソッドを作成することです。各コントロールタイプの部分的なビューを作成することができ、レンダリングされるHtmlStringにそれらを挿入します。

関連する問題