我正在使用Linq To Sql以几种不同的形式填充Html.DropDownLists,代码如下;
ViewData["EmployeeId"] = new SelectList(EmployeeRepository.Employees.ToList(),
"EmployeeId", "FullName");
这一切都运行得很好,但我在控制器上为获取ActionResult提供了相同的代码,然后在ActionResult后面进行相同的操作。如果它在模型或控制器中它仍然必须被发送到视图似乎并不重要,我仍然最终重复此代码。因此,为了与“不要重复自己”保持一致,任何人都有任何关于如何在一个地方包含/重构此代码的想法。在视图中做这一切会更好吗?感谢SO的所有贡献者。
答案 0 :(得分:1)
解决此问题的一种方法是在模型上创建SelectList(或List)属性。当您新建模型时,将您的员工投入此属性:
EmployeeRepository.Employees.Select(e => new SelectListItem
{Text=e.FullName,Value=e.EmployeeId}).ToList()
现在,在您的视图中引用属性
Model.EmployeeList //the List<SelectListItem> containing your employees
您不应该在控制器中使用此属性,因为它曾用于为用户提供可供选择的选项。它不是用户选择的指标。
HTH