如何编写一个简单的 Html.DropDownListFor() ?

在 ASP.NET MVC 2中,我想写一个非常简单的下拉列表,它提供了静态选项。例如,我想提供“红色”、“蓝色”和“绿色”之间的选择。

390895 次浏览

参见 这篇 MSDN 的文章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
)
)
%>

或者你可以不编写类,直接把这样的东西放到视图中。

从模型中的字典开始避免大量的脂肪指纹

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;
King 参考文献: 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" />
}

我认为这个答案类似于培拉特的,因为你把你的 DropDownlist 的所有代码直接放在视图中。但我认为这是创建 y/n (boolean)下拉列表的一种有效方法,所以我想与大家分享。

给初学者的一些注意事项:

  • 不要担心‘ x’的名称-它是在这里创建的,用于 并且没有链接到任何其他地方 MVC 应用程序,所以你可以把它叫做你想要的-‘ x’,‘ model’,‘ m’等等。
  • 用户将在下拉列表中看到的占位符是“选择一个选项”,所以如果需要,您可以更改此选项。
  • 在下拉列表之前有一段文字说“你喜欢披萨吗?”
  • 我认为这应该是一个表单的完整文本,包括一个提交按钮

希望这能帮到别人,