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

时间:2010-06-16 23:21:04

标签: c# asp.net asp.net-mvc-2 html.dropdownlistfor

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

7 个答案:

答案 0 :(得分:178)

请参阅this MSDN articleexample 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")) %>

答案 1 :(得分:60)

<%: 
     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
           )
        )
%>

或者你不能写任何类,把这样的东西直接放到视图中。

答案 2 :(得分:34)

从模型

中的词典开始,避免大量的指法
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"))

答案 3 :(得分:31)

您好我是如何在一个项目中完成的:

     @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"})

我希望它可以帮助某人。感谢

答案 4 :(得分:13)

或者如果它来自数据库上下文,您可以使用

@Html.DropDownListFor(model => model.MyOption, db.MyOptions.Select(x => new SelectListItem { Text = x.Name, Value = x.Id.ToString() }))

答案 5 :(得分:5)

使用&#34;请选择一个项目&#34;

@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 &amp;&amp; Joel Wahlund ;
King参考:https://stackoverflow.com/a/1528193/1395101 JaredPar ;

感谢 Master Programmer &amp;&amp; Joel Wahlund &amp;&amp; JaredPar ;

祝你好运。

答案 6 :(得分:1)

cluster_true = c(1,5,5,5,56,10,19,10)

我认为这个答案与培拉特的答案相似,因为您将DropDownList的所有代码直接放在视图中。但是我认为这是创建y / n(布尔值)下拉列表的有效方法,因此我想与他人分享。

一些初学者注意事项:

  • 不用担心'x'是什么,它是在此处创建的, 第一次,并且没有链接到 MVC应用程序,因此您可以根据需要调用它-'x','model','m'等。
  • 用户将在下拉列表中看到的占位符为“选择一个选项”,因此您可以根据需要更改此位置。
  • 下拉菜单前有一段文字,上面写着“你喜欢披萨吗?”
  • 我认为这应该是表单的完整文本,包括提交按钮

希望这对某人有帮助