Как написать простой Html.DropDownListFor()?
In ASP.NET MVC 2, я хотел бы написать очень простой выпадающий список, который дает статические параметры. Например, я хотел бы предоставить выбор между "красным", "синим" и "зеленым".
7 ответов:
посмотреть этой статье и пример использования здесь, на переполнение стека.
предположим, что у вас есть следующий класс Linq/POCO:
public class Color { public int ColorId { get; set; } public string Name { get; set; } }
и предположим, что у вас есть следующая модель:
public class PageModel { public int MyColorId { get; set; } }
и, наконец, предположим, что у вас есть следующий список цветов. Они могут исходить из запроса Linq, из статического списка и т. д.:
public static IEnumerable<Color> Colors = new List<Color> { new Color { ColorId = 1, Name = "Red" }, new Color { ColorId = 2, Name = "Blue" } };
на ваш взгляд, вы можете создать выпадающий список, как Итак:
<%= Html.DropDownListFor(n => n.MyColorId, new SelectList(Colors, "ColorId", "Name")) %>
<%: Html.DropDownListFor( model => model.Color, new SelectList( new List<Object>{ new { value = 0 , text = "Red" }, new { value = 1 , text = "Blue" }, new { value = 2 , text = "Green"} }, "value", "text", Model.Color ) ) %>
или вы не можете писать классы, поместите что-то вроде этого непосредственно в представление.
избегайте много жира пальцами, начиная со словаря в модели
namespace EzPL8.Models { public class MyEggs { public Dictionary<int, string> Egg { get; set; } public MyEggs() { Egg = new Dictionary<int, string>() { { 0, "No Preference"}, { 1, "I hate eggs"}, { 2, "Over Easy"}, { 3, "Sunny Side Up"}, { 4, "Scrambled"}, { 5, "Hard Boiled"}, { 6, "Eggs Benedict"} }; } }
в представлении преобразовать его в Список для отображения
@Html.DropDownListFor(m => m.Egg.Keys, new SelectList( Model.Egg, "Key", "Value"))
привет вот как я это сделал в одном проекте:
@Html.DropDownListFor(model => model.MyOption, new List<SelectListItem> { new SelectListItem { Value = "0" , Text = "Option A" }, new SelectListItem { Value = "1" , Text = "Option B" }, new SelectListItem { Value = "2" , Text = "Option C" } }, new { @class="myselect"})
Я надеюсь, что это кому-то поможет. Спасибо
или если это из контекста базы данных вы можете использовать
@Html.DropDownListFor(model => model.MyOption, db.MyOptions.Select(x => new SelectListItem { Text = x.Name, Value = x.Id.ToString() }))
С ", Пожалуйста, выберите один пункт"
@Html.DropDownListFor(model => model.ContentManagement_Send_Section, new List<SelectListItem> { new SelectListItem { Value = "0", Text = "Plese Select one Item" } } .Concat(db.NameOfPaperSections.Select(x => new SelectListItem { Text = x.NameOfPaperSection, Value = x.PaperSectionID.ToString() })), new { @class = "myselect" })
производные от кодов:Мастер-Программист &&Joel Wahlund;
Король Ссылка : https://stackoverflow.com/a/1528193/1395101 JaredPar;спасибо Мастер-Программист &&Joel Wahlund &&JaredPar;
удачи друзья.
@using (Html.BeginForm()) { <p>Do you like pizza? @Html.DropDownListFor(x => x.likesPizza, new[] { new SelectListItem() {Text = "Yes", Value = bool.TrueString}, new SelectListItem() {Text = "No", Value = bool.FalseString} }, "Choose an option") </p> <input type = "submit" value = "Submit my answer" /> }
Я думаю, что этот ответ похож на Berat, в том, что вы помещаете весь код для своего выпадающего списка непосредственно в представление. Но я думаю, что это эффективный способ создания выпадающего списка y/n (boolean), поэтому я хотел поделиться им.
некоторые заметки для новичков:
- не беспокойтесь о том, что' x ' называется-он создан здесь, для первый раз, и не ссылается ни на что другое в другом месте MVC приложение, так что вы можете назвать его, что вы хотите - 'x', "модель", " М " и др.
- заполнитель, который пользователи увидят в выпадающем списке,- это "выбрать опцию", поэтому вы можете изменить это, если хотите.
- перед выпадающим списком есть немного текста, в котором говорится: "вам нравится пицца?"
- это должен быть полный текст для формы, включая кнопку отправки, я думаю
надеюсь, это кому-то поможет,