Asp.net mvc 2 如何在[HttpPost]方法中接收选定的Dropdownlist值?

Asp.net mvc 2 如何在[HttpPost]方法中接收选定的Dropdownlist值?,asp.net-mvc-2,Asp.net Mvc 2,又是一个新手问题 我正在根据设置视图模型 : 表示我的ViewData模型包含(在我的示例中)一个dropdownlist 此外,dropdownlist也显示在我的网站(*.aspx)中,看起来是这样的: <%: Html.DropDownList("MyDropDownListField", new SelectList(Model.My_DropDownList as IEnumerable,

又是一个新手问题

我正在根据设置视图模型 :

表示我的ViewData模型包含(在我的示例中)一个dropdownlist

此外,dropdownlist也显示在我的网站(*.aspx)中,看起来是这样的:

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

必须执行哪些操作才能获得选定的dropdownlist值
在[HttpPost]方法中?

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

您应该看看如何使用
Html.DropDownListFor
helper

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


我可以衷心推荐您至少阅读一本ASP.NET MVC官方教程,最好是其中包含DropDownList的教程。:)他们非常擅长让你快速而坚定地掌握观点、行动,并在两者之间传递数据。谢谢。好啊没错,看看这些教程会有帮助。。。很抱歉这么愚蠢地提出这样的问题。非常感谢!这真的很有帮助!但是我仍然无法理解/接受(!)ViewModel的返回值将被传递到模型中,因为这两个类都有一个同名的属性!不知怎的奇怪的数据绑定,不是吗?最后意味着我们没有三个“类”,比如MVC=模型、视图和控制器。不,我们有四个:模型、视图、控制器和通用视图模型。示例复选框:模型只需要一个bool来携带信息“已选中”或“未选中”(public bool复选框{get;set;}),但是ViewModel包含一个类似“public List Checkbox{get;set;}”的属性来处理视图的所有需要。而且它变得非常奇怪(对我来说)此时:如果两个属性的名称完全相同(如我们示例中的复选框),则返回值将从ViewModel传递到模型。。。
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);
}
<%: Html.DropDownList("MyDropDownListField", 
                      new SelectList(Model.My_DropDownList as IEnumerable, 
                                     "Value",
                                     "Text", 
                                     Model.My_DropDownList
                                    )
                     )%>
[HttpPost]
public ActionResult Index(My_IndexModel model)
{
    if (ModelState.IsValid)
    {
         ... model.My_DropDownList ...
    }
}