2016-04-06 13 views
-1

テーブルを持つASP.NET MVCアプリケーションがあります。テーブルには、フラット(アドレス、日付の追加、コメント)が含まれています。DropDownListテーブルとのバインド

"作成"と "編集"フォームでは、DropDownListなどを使用したいと思います。フラットタイプ用。

これらのすべてのフラットプロパティ(アドレスなど)を持つ1つのテーブルと、フラットタイプ(ID +名前)の2つ目のテーブルがあります。

私の質問は、ドロップダウンリストをフラットタイプのテーブルにバインドして、これらのテーブル間に適切な関係を設定する方法です。 1つのコントローラでこれを行うことはできますか?

概要:

私は、一つのテーブルからのアイテムでリストを提供し、基本的なテーブルに適切なID値を挿入し、Idを-IDの関係でそれらを接続したいです。私のCreate/Editビューでは@ Html.Modelを1つしか使用できないと思います(これは私のベーシックな問題です)

+0

これまでに何か試しましたか? StackOverflowコミュニティは通常、コードでフィードします。 – Alexei

+0

"フラット"モデルのフィールドも使用する必要がある場合、どのビューでもモデル "FlatType"を使用する方法がわかりません – user6167767

答えて

0

データベース内のテーブルにコンポーネント(ドロップダウンリスト)をバインドしません。

MVCは、データがさまざまなレイヤーに渡され、明快さとコード効率が向上するデザインパターンです。

ビジネスモデル(MVCのM)は、データベースからデータをロードするメソッドを実装する必要があります。 Linq2Sqlを使用すると、データベース接続を介して直接クエリを実行したり、好きなシステムを使用することができます。

これは、システムが請願者(通常はビューを呼び出すコントローラー)に反応したときに、このビューでオブジェクトにデータをロードする場合は、データベースからロードしてからビューに渡す必要があることを意味します。

コントローラがビューを呼び出すことを決めた場合、ビジネスモデルはビューに必要な情報を識別し、ビューにフェッチするデータ構造を作成します。次に、ビューでは、ドロップダウンリストコントロールをモデル内のデータにリンクします。

通常、SelectList型は、DropDownListを介してデータをリンクするのに最適なオプションの1つですが、ほぼすべてのIEnumerable型を使用できます。

TL; DR ;:モデル内のデータベースから

  • 読み取りデータ、ビューを呼び出す前に。
  • SelectListを構築し、このデータと共にロードします。
  • データをビューに渡します(ヒント:大きなデータ構造の一部である可能性があります)。
  • ビューモデルに渡されるSelectListにDropDownListコンポーネントをリンクします。
+0

情報に感謝しますが、もう1つの質問があります。私のViewModelには、リストとIQueryable があります。私のビューでフラットテーブルの任意のフィールドにアクセスするには、フラットを宣言する必要がありますか? – user6167767

+0

ビューにIQueryable オブジェクトを渡すと、View(yourObject)を返すことで、Model.yourObjectAttributesビューのレンダリング時にこのオブジェクトにアクセスできます。つまり、yourObjectがIQueryableオブジェクトの場合、Modelオブジェクトビュー上。もちろん、ビューに戻す前にyourObjectにデータベース情報をロードする必要があります。 – Bardo

関連する問題