我把自己打结了——我认为最好退后一步,回到基础。
我知道我应该使用 ViewModel,所以这就是我想要构建的。
我的演示应用程序将有 4 个部分(需要填写表格的 4 个不同部分):
- 从用户那里获取日期/天数
- 使用该数据查询数据库,并返回符合条件的记录列表——每一条记录都有一个唯一的 TypeID ID——对于每一条记录,它们还应该有 2 个与之关联的动态 DropDownLists(以便在每个列表的 ListBox3 对应于 TypeID3(以及任何 ID)
- 然后,用户将能够再次从动态填充的下拉列表中选择 Extras
- 将收集用户姓名/地址/电话
我对 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)之后回传数据以使用所选值主动填充 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
感谢您提供任何帮助/指针/示例...
标记