将下拉选定值绑定到模型属性

时间:2011-10-17 15:08:07

标签: asp.net-mvc-3

可能我只是不知道如何谷歌,但我试图找到一个示例,其中下拉控件被数据绑定到一个集合(这部分对我有用),然后我想读取drop向下选择回变量。此变量可以是模式的属性。绑定下拉选择值返回变量是我遇到麻烦的地方。在网络表单世界中,这没什么大不了的,但由于某些原因,我无法使用MVC 3.任何代码示例或示例都将受到高度赞赏。

2 个答案:

答案 0 :(得分:4)

在ASP.NET MVC中执行此操作的推荐方法是使用视图模型。设计下拉列表时,在此视图模型上需要2个属性:一个用于将所选值绑定到,另一个用于表示将用于生成选项的值和文本集合。然后你可以使用第一个属性来预选一个给定的选项。

所以我们从设计视图模型开始:

public class MyViewModel
{
    public string SelectedId { get; set; }
    public IEnumerable<SelectListItem> Items { get; set; }
}

然后是一个控制器动作,用于填充此视图模型:

public ActionResult Index()
{
    var model = new MyViewModel
    {
        // preselect the second item which has value=2
        SelectedId = "2",

        Items = new[]
        {
            new SelectListItem { Value = "1", Text = "item 1" },
            new SelectListItem { Value = "2", Text = "item 2" },
            new SelectListItem { Value = "3", Text = "item 3" },
        }
    };
    return View(model);
}

并在强类型视图中使用DropDownListFor帮助程序生成下拉列表:

@model MyViewModel
@Html.DropDownListFor(
    x => x.SelectedId, 
    Model.Items,
    "-- Select an Item --"
)

答案 1 :(得分:0)

您可以在模型中绑定下拉列表值,如下所示:

public virtual SelectList ddlvalue
        {
            get
            {
                List<SelectListItem> list = new List<SelectListItem>();
                list.Add(new SelectListItem() { Text = "Yes", Value = "Y" });
                list.Add(new SelectListItem() { Text = "No", Value = "N" });
                return new SelectList(list, "Value", "Text");
            }
            set { }
        }