ASP.NET MVC 2 - 如何使用DropDownListFor?

时间:2010-06-09 12:52:54

标签: asp.net-mvc-2

我有一个简单的模型/视图,其中包含用户名,密码等内容,并使用帮助程序将其连接起来。

我现在有一个名为“NumberOfChildren”的字段。我想在其中存储一个数字(int),我希望它呈现一个包含“无”,“1”,“2”等的下拉框。

我的想法是模型会有一个列表或一个返回列表的方法,所以我可以指定我将数据放入的NumberOfChildren_List等值,然后DropDownListFor拉出该列表并呈现它,匹配值为下拉列表中项目的值。

然而,在花了大约30分钟试图弄清楚它是如何起作用之后,我放弃了并决定在这里问。有什么想法吗?

编辑:这是一些代码......

<%: Html.DropDownListFor(m => m.NumberOfChildren, new SelectList(Model.NumberOfChildrenListValues))%>

并在模型中

        [Required]
        [DisplayName("How many children do you have?")]
        public string NumberOfChildren { get; set; }

        public IEnumerable<string> NumberOfChildrenListValues
        {
            get
            {
                List<string> list = new List<string>() { "None", "1", "2" };

                return list;
            }

            set
            {

            }

        }

虽然我得到的对象未设置为对象错误的实例。想法?

1 个答案:

答案 0 :(得分:2)

尝试这样(您需要为每个选项设置文本 - 该文本将用于在下拉列表中呈现,该值将用于绑定到所选项目到NumberOfChildren属性):

[Required]
[DisplayName("How many children do you have?")]
public string NumberOfChildren { get; set; }

public IEnumerable<SelectListItem> NumberOfChildrenListValues
{
    get
    {
        return new[]
        {
            new SelectListItem { Value = "0", Text = "None" },
            new SelectListItem { Value = "1", Text = "1" },
            new SelectListItem { Value = "2", Text = "2" },
        };
    }
}

然后:

<%: Html.DropDownListFor(
    m => m.NumberOfChildren, 
    Model.NumberOfChildrenListValues
) %>