2009-10-02 2 views

ответ

1

<%= Html.DropDownList() %> имеет около 8 перегрузок, которые вы можете использовать. Вам нужно будет перечислить ваше перечисление в IEnumerable<SelectListItem>, чтобы пройти к нему. Что-то вроде этого:

var names = Enum.GetNames(typeof(MyEnum)); 
List<SelectListItem> items = new List<SelectListItem>(); 
foreach (var s in names) 
{ 
    items.Add(new SelectListItem() { Text = s, 
            Value = s, 
            Selected = (s == "SelectedValue") }; 
} 
+2

Лично, если бы я делал это таким образом, я бы использовать LINQ, а не создавать список, а затем заселять его. Преобразование последовательности одной вещи в последовательность чего-то другого - это именно то, к чему LINQ хорош. var items = Enum.GetNames (typeof (MyEnum)). Выберите (n => новый SelectListItem() {Text = n, Value = n, Selected = (n == "SelectedValue")}); –

2

FluentHtml библиотеки из MVC Contrib имеет встроенную поддержку для создания полого выбора из перечислений.

<%= this.Select("example") 
     .Options<System.IO.FileOptions>() 
     .Selected(System.IO.FileOptions.Asynchronous) %> 

Это выходы:

<select id="example" name="example"> 
    <option value="0">None</option> 
    <option value="16384">Encrypted</option> 
    <option value="67108864">DeleteOnClose</option> 
    <option value="134217728">SequentialScan</option> 
    <option value="268435456">RandomAccess</option> 
    <option selected="selected" value="1073741824">Asynchronous</option> 
    <option value="-2147483648">WriteThrough</option> 
</select> 
Смежные вопросы