私は自分自身を結び目で結びます-そして、大きな一歩を踏み出し、基本に戻ることが最善だと思いました。
私はViewModelを使用する必要があることを理解しているので、それを構築しようとしています。
私のデモアプリには4つのセクションがあります(フォームの4つの異なる部分に記入する必要があります)。
- ユーザーから日付/日数を取得
- そのデータを使用してデータベースにクエリを実行し、適格なレコードのリストを返します(これらはそれぞれTypeIDの一意のIDを持ちます)。また、これらのそれぞれについて、2つの動的DropDownListが関連付けられている必要があります(各リストのListBox3は、TypeID3(およびそのID)に対応します。
- その後、ユーザーは動的に入力されたドロップダウンリストからエクストラを選択できるようになります
- ユーザーの名前/追加/電話が収集されます
ViewModelがどのように見える/保持する必要があるかについての私の「ビュー」は次のとおりです。
私のviewModelは次のようになっているはずです。
public class SearchViewModel
{
public DateTime Date{ get; set; }
public int Days { get; set; }
public IQueryable<TypeID> TypeIDs { get; set; }
public IQueryable<LB1Item> LB1Items { get; set; }
public IQueryable<LB2Item> LB2Items { get; set; }
public IQueryable<Extras> Extras { get; set; }
public string Name { get; set; }
public string Add { get; set; }
public string Tel { get; set; }
public string email { get; set; }
}
まず第一に、これは私が上で説明したもののViewModelを構築する方法ですか?ドロップダウンボックスについてはよくわかりません。各フォームについて、選択した日付に基づいて、取得したTypeIDごとに1、2、3 .... 10、11、12が存在する可能性があります。
LB1ItemおよびLB2Itemの各ドロップダウンボックスには、選択した値を各行のTypeIDに対して保存する必要があります。
これは、1つのドロップダウンのクラスがどのように見えるかを私が考えるものです。
public class LB1Item
{
public String TypeName { get; set; }
public long TypeID { get; set; }
public int NumSelected { get; set; }
public int TypeCount { get; set; }
public IEnumerable<SelectListItem> CarsAvail
{
get
{
return new SelectList(
Enumerable.Range(0, TypeCount+1)
.OrderBy(typecount => typecount)
.Select(typecount => new SelectListItem
{
Value = typecount.ToString(),
Text = typecount.ToString()
}
), "Value", "Text");
}
}
}
それも大丈夫ですか?それとも、私が達成しようとしていることを複雑にしすぎていますか?
また、各ステージ(1、2、3、4)の後にデータをPOSTして戻した後、選択した値をViewModelにアクティブに入力し、それをビューに渡して、次のデータを取得できるようにします。次のステップ。
最終的には次のようなものになります。
Date: 01/09/2012
Days: 4
{ List:
TypeID: 3059 ListBox1: 2 ListBox2: 8748,
TypeID: 2167 ListBox1: 7 ListBox2: 2378,
TypeID: 4983 ListBox1: 4 ListBox2: 5873
}
{List:
ExtraID: 4324,
ExtraID: 3878,
ExtraID: 4872,
ExtraID: 7698,
ExtraID: 2873
}
Name: Mark
Add: My town
Tel: 0912378
Email: me@me.com
ヘルプ/ポインタ/サンプルをありがとう...
マーク