asp.net下拉列表转换为MVC3下拉列表

时间:2012-12-19 13:55:04

标签: asp.net asp.net-mvc-3 drop-down-menu

我在asp.net中有一个静态下拉列表,如下所示:

<asp:DropDownList runat="server" ID="ddlSource" Width="278px">
                    <asp:ListItem Value="NONE" Text="- Selct-" />
                    <asp:ListItem Text="" disabled="disabled">Old customer</asp:ListItem>
                    <asp:ListItem Text="got sms" Value="OLD_SMS" />
                    <asp:ListItem Text="got email" Value="OLD_EMAIL" />
                    <asp:ListItem Text="othe" Value="OLD_OTHER" />

                    <asp:ListItem Value="" disabled="disabled">Heard in radio</asp:ListItem>
                    <asp:ListItem Text="radio ad" Value="RADIO_AD" />
                    <asp:ListItem Text="radio programme" Value="RADIO_SHOW" />
                    <asp:ListItem Text="other" Value="RADIO_OTHER" />
          </asp:DropDownList> 

如何在MVC3中实现相同的功能?

2 个答案:

答案 0 :(得分:2)

如果它是静态列表,那么您需要做的就是:

<select id="ddlSource" style="width:278px;">
    <option value="NONE">- Selct-</option>
    <option disabled="disabled">Old customer</option>
    <option value="OLD_SMS">got sms</option>
  ....
</select> 

这只是简单的HTML。

答案 1 :(得分:2)

您可以使用Html.DropDownList()Html.DropDownListFor()。两种方法都以IEnumerable<SelectListItem>作为参数。 “for”选项采用指向模型中集合的Func,而非for选项直接采用集合。可以像这样创建一个集合:

var selectList = new SelectListItem[]
{
    new SelectListItem()
    {
        Selected = true,
        Text = "Text",
        Value = "Value"
    },

    new SelectListItem()
    {
        Selected = true,
        Text = "Text1",
        Value = "Value1"
    },
};

毋庸置疑,您也可以使用普通的旧HTML进行基本<select><option>...,但是将SelectListItem的集合放入模型中并使用@Html.DropDownListFor(),您可以利用强大的优势-typed模型绑定,使MVC如此出色。