到目前为止,我已经使用Model类来嵌入相关值的列表,以在视图中呈现为DropDownList。例如,假设我有一个其中有使用存储库类时的Html.Dropdownlist值
public class Contact {
...
public int ContactTypeID { get; set; }
...
}
ContactTypeID一个ContactType属性跟模型类,它包含所有的接触类型,如客户,供应商,等等。我已经成功地使用,直到数据库表中引用的行现在所谓的联系类的属性,例如,ContactTypeList如下面的示例
public IEnumerable<SelectListItem> ContactTypeList {
get {
return GetContactTypeList().Select(
t => new SelectListItem { Text = t.Description,
Value = t.ContactTypeID.ToString() });
}
}
这种方式使用强类型的意见时,我可以做以下方式
<%: Html.DropDownListFor(model => model.ContactTypeID, Model.ContactTypeList, new {})%>
这种方法没有任何问题,但从SoC角度来看并不完全清洁。
在一个新项目中,我开始使用存储库模式和StructureMap作为DI/IoC工具,因此模型类不再有对从基础数据获取数据的存储库类的引用商店。
我知道我总是可以使用控制器和ViewData/ViewBag让这些列表通过视图,但我想知道这是否是实现范围的好方法。
您的项目过得怎么样?实现结果并让代码保持清洁的最佳方式是什么?
感谢您的帮助
好东西!!感谢您的自动映射建议:) – Lorenzo 2011-01-26 01:08:16