如何在[HttpPost]方法中接收选定的Dropdownlist值?

时间:2010-08-10 08:05:43

标签: asp.net-mvc-2

又一个新手问题。 ; - )

我正在设置我的视图模型 this very helpfull post

public class My_IndexModel
{
   ...
   public IEnumerable<SelectListItem> My_DropDownList { get; set; }   
   ...
}

请注意我使用

IEnumerable<SelectListItem>

能够设置选定的属性。

下拉列表值在控制器中设置:

public ActionResult Index()
{
     ...
     var DropDownList_Values = from value in My_DB.Value
                               select new SelectListItem
                               {
                                   Selected = (value.IsDefault == 1),
                                   Text = value.Value1,
                                   Value = value.Value1
                                };

     ...

     var viewModel = new My_IndexModel
     {  ...
        My_DropDownList = DropDownList_Values.ToList(), 
        ...
     }

     ...

     return View(viewModel);
}

表示我的ViewData模型包含(在我的情况下)下拉列表。

此外,下拉列表显示在我的网站(* .aspx)中,如下所示:

<%: Html.DropDownList("MyDropDownListField", 
                      new SelectList(Model.My_DropDownList as IEnumerable, 
                                     "Value",
                                     "Text", 
                                     Model.My_DropDownList
                                    )
                     )%>

到目前为止没问题。

在网站上(* .aspx)我有一个简单的“提交”按钮,它返回所有数据。 我在这里获取提交事件:

[HttpPost]
public ActionResult Index(My_IndexModel model)
{
    if (ModelState.IsValid)
    {
         ... model.My_DropDownList ...
    }
}

但是DropDownList是空的!

必须采取哪些措施才能获得所选的下拉列表值 在[HttpPost]方法中?

1 个答案:

答案 0 :(得分:1)

您需要将一个与DropDownList同名的属性添加到正在接收帖子的控制器中使用的模型。如果名称匹配,框架将把选定的值放入匹配的模型属性中。

您应该查看使用Html.DropDownListFor帮助程序。

有关更多信息,请参阅此问题,当我遇到问题找出在MVC中实现DropDownList的最佳方法时,我发布了一段时间:

Best way of implementing DropDownList in ASP.NET MVC 2?