2010-02-20 43 views
1

我正在使用Linq To Sql用幾種不同的形式填充Html.DropDownLists,例如:重構Html.DropDownList數據源asp.net mvc

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

這一切工作得很好,但我有相同的代碼遍佈控制器爲得到的ActionResult,然後在後的ActionResult同樣的事情。這似乎並不重要,如果這是模型或控制器它仍然必須發送到視圖,我仍然最終重複此代碼。因此,遵守「不要重複自己」的口頭禪沒有人有任何想法如何在一個地方包含/重構此代碼。在視圖中做所有這些會更好嗎?感謝SO上的所有貢獻者。

回答

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

+0

感謝羅伯特,我喜歡你的解決方案比我目前這樣做的方式要好得多。乾杯。 – hankasu