Есть ли помощники для отображения dropdownlists в asp.net-mvc?html помощники для выпадающих списков?
У меня есть перечисление, которое мне нужно заполнить и предварительно выбрать в выпадающем списке.
Есть ли помощники для отображения dropdownlists в asp.net-mvc?html помощники для выпадающих списков?
У меня есть перечисление, которое мне нужно заполнить и предварительно выбрать в выпадающем списке.
<%= 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") };
}
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>
Лично, если бы я делал это таким образом, я бы использовать LINQ, а не создавать список, а затем заселять его. Преобразование последовательности одной вещи в последовательность чего-то другого - это именно то, к чему LINQ хорош. var items = Enum.GetNames (typeof (MyEnum)). Выберите (n => новый SelectListItem() {Text = n, Value = n, Selected = (n == "SelectedValue")}); –