2013-09-24 66 views
0

好的我已經瀏覽過不同的網站,關於在DropDownLists中使用ENUM的問題,並且與使用Custom Helpers在將值傳遞給ViewBag之前將值傳遞給DDL的人有點混淆。將ENUM分配給DropDownList

http://blogs.msdn.com/b/stuartleeks/archive/2010/05/21/asp-net-mvc-creating-a-dropdownlist-helper-for-enums.aspx

enum values in drop down list in mvc4

http://webcache.googleusercontent.com/search?q=cache:http://www.ninjanye.co.uk/2012/01/creating-dropdown-list-from-enum-in.html

我用各種Html.DropDownList助手整個網站,但在DDL之前沒有使用到ENUM。我寧願將它們硬編碼到視圖中,因爲我正在使用switch語句來控制選擇filter選項時發生的情況。所以想知道是否有一個簡單的方法來實現這一點,而不需要創建一個新的幫手來糾正這種情況。

這裏是我到目前爲止(減去不必要的代碼):

public enum OrderFilter 
{ 
    All, 
    Live, 
    InProgress, 
    Invoiced, 
    Outstanding 
} 

public ActionResult Index(OrderFilter? orderFilter) 
{ 
    ViewBag.FilterOptions = orderFilter; 
} 

@Html.DropDownList("orderFilter", (IEnumerable<SelectListItem>)ViewBag.FilterOptions, "Filter Options") 

如果我這樣做是因爲我在上面所做的反應是「有型‘IEnumerable<SelectListItem>’有沒有ViewData的項目關鍵'orderFilter'「。

我正在尋找類似於以下代碼的東西,但沒有使用自定義幫助器(如果可能)。

@Html.DropDownList("misc", (IEnumerable<SelectListItem>)ViewBag.Misc) 

var users = _userRepository.GetData().Select(u => new SelectListItem 
    { 
    Value = u.Id.ToString(CultureInfo.InvariantCulture), 
    Text = u.Details 
    }); 

ViewBag.Administrators = users; 
+0

爲什麼你不希望這個自定義的HTML幫助? –

+0

我已經完成了所有其他下拉列表(不使用ENUM)與MVC提供的內置功能。所以我試圖避免在不需要的地方創建多餘的代碼。 我完全開放的建議,如果你可以提供有效的推理,爲什麼它應該使用,那麼我會碰巧測試它。 – Damian

回答

0

經過對此事的廣泛調查後,按照我想要的方式進行這項工作並非易事。所以我在helper類中添加了下拉列表中的ENUM值。

我查看過的一些示例與ENUM Helper一起使用模型,但因爲我不需要我發現下面的視頻教程相當有用。下面的視頻是我目前的實施,並且按照我的預期工作。

Binding Enum type with Dropdownlist Part 1

Binding Enum type with Dropdownlist Part 2

Binding Enum type with Dropdownlist Part 3