В ASP.NET MVC 2 я хотел бы написать очень простой раскрывающийся список, который дает статические параметры. Например, я хотел бы предоставить выбор между «красным», «синим» и «зеленым».Как написать простой Html.DropDownListFor()?
ответ
См. this MSDN article и example usage here on Stack Overflow.
Давайте предположим, что у вас есть следующий 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
)
)
%>
или вы можете не пишите классы, ставьте что-то подобное прямо на представление.
Спасибо, это было трудно найти решение для ... – ctorx
Ниже приведена ошибка при попытке кода: "Ссылка на объект не установлена в экземпляр объекта. » –
Плохая идея добавить логику модели на ваш взгляд –
Избегайте из большого количества жира перебирать, начиная с словаря в модели
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() }))
Пожалуйста, не поощряйте такую глупость. Если вам нравится ссылаться на свой контекст db в ваших представлениях Razor, которые находятся на вас, но для th ose нас, которые, как строительное программное обеспечение правильный путь, то это ужасная идея. Привяжите представление Razor к классу модели представления, любые данные, необходимые для представления, хранятся в экземпляре модели представления, созданной контроллером. Это часть причины, по которой я ухожу от .Net, слишком много страшных разработчиков делают ужасные вещи с их кодом, создающим огромные головные боли для всех остальных. Бьюсь об заклад, вы положили всю свою бизнес-логику в свои контроллеры! – JBeckton
Во-первых, извините за любые грамматические ошибки, поскольку английский не является моим первым языком. Всегда приятно видеть, что кто-то делает такой прозаический комментарий, я приветствую вас, сэр, что вы нашли время, чтобы внести свой вклад. Это также всегда обнадеживает, что профессия разработчиков в таких хороших руках, как ваша, так как моя не будет делать. Подобно вашему невежественному комментарию, почему я никогда больше не выхожу здесь. Могу ли я сообщить вам, что, когда я это написал, мне было 8 месяцев в моем образовании и никогда не касался веб-разработки заранее. Я хотел поделиться другим вопросом с небольшими знаниями, которые у меня были. –
8 месяцев в? Тогда зачем пытаться решать проблемы, когда вы не знаете, как это сделать? Мой комментарий далек от невежества, я вижу этот материал изо дня в день. Вы должны приступить к рассмотрению объема ручной работы, которую вы обязываете своим коллегам. представьте, что у вас есть корпоративное приложение с сотнями просмотров, и ваш технический директор хочет переключиться на Oracle DB. Представьте личную стоимость рефакторинга всех видов и контроллеров, которые используют выпадающие списки только из-за вашей одной строки кода! Я не пытаюсь оскорбить вас, просто пытаюсь объяснить вам, как плохой совет может иметь огромные последствия. – JBeckton
С "Пожалуйста, выберите один пункт"
@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" })
Производный от кодов: Master Programmer & & Joel Валунд;
King Номер ссылки: https://stackoverflow.com/a/1528193/1395101JaredPar;
Благодаря Мастер программист & & Joel Валунд & & JaredPar;
Удачи друзьям.
- 1. Как написать (простой) макрос?
- 2. Как отсортировать @ Html.DropDownListFor?
- 3. @ Html.DropDownListFor Как добавить опцию?
- 4. Как изменить ширину html.DropDownListFor()
- 5. Как написать простой честный семафор?
- 6. Как написать простой сервер SMPP
- 7. Как написать простой перехватчик ошибок?
- 8. Как написать простой псевдо-ассемблер?
- 9. Как написать простой экземпляр Silverlight?
- 10. Как написать простой USB-драйвер?
- 11. Как написать простой клиент SSH?
- 12. Как написать простой честный замок?
- 13. Basic HTML.DropDownListFor
- 14. Html.DropDownListFor confusion
- 15. Использование @ Html.DropDownListFor
- 16. Простой мод написать
- 17. Попытка написать простой цикл
- 18. ASP.NET HTML.DropDownListFor
- 19. @ Html.DropDownListFor ошибка
- 20. Расширение @ Html.DropDownListFor
- 21. HTML.DropDownListFor DropDownList
- 22. Написать простой плагин зепто
- 23. как получить выбранный индекс html.dropdownlistfor
- 24. Как использовать @ Html.DropDownListFor с пользовательским типом данных
- 25. Как написать простой фоновый поток в CWorkerThread
- 26. Как написать простой класс в C++?
- 27. Как написать модульные тесты в простой C?
- 28. Как написать простой автокомпонент для php-формы?
- 29. Как написать простой графический интерпретатор в C#?
- 30. Как написать простой цикл приема в Erlang
это действительно прозрачный. Я хотел бы знать, где я должен поместить IEnumerable в свой код? Я знаю, что это глупо, как вопрос, но я очень потерян и новичок в этом: s –
Rinesse
Не беспокойтесь, друг. Я знаю каково это.:) Как вы предположили в своем первоначальном вопросе, является ли это статическим списком, который вы собираетесь создать в коде, или вы собираетесь вытащить этот список из базы данных? –
статический список, который содержит 4 параметра, не обрезает базу данных – Rinesse