重构Html.DropDownList数据源asp.net mvc

时间:2010-02-20 16:36:43

标签: asp.net-mvc

我正在使用Linq To Sql以几种不同的形式填充Html.DropDownLists,代码如下;

ViewData["EmployeeId"] = new SelectList(EmployeeRepository.Employees.ToList(), 
                                       "EmployeeId", "FullName");

这一切都运行得很好,但我在控制器上为获取ActionResult提供了相同的代码,然后在ActionResult后面进行相同的操作。如果它在模型或控制器中它仍然必须被发送到视图似乎并不重要,我仍然最终重复此代码。因此,为了与“不要重复自己”保持一致,任何人都有任何关于如何在一个地方包含/重构此代码的想法。在视图中做这一切会更好吗?感谢SO的所有贡献者。

1 个答案:

答案 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