Asp.net mvc 2 如何在[HttpPost]方法中接收选定的Dropdownlist值?
又是一个新手问题 我正在根据设置视图模型 : 表示我的ViewData模型包含(在我的示例中)一个dropdownlist 此外,dropdownlist也显示在我的网站(*.aspx)中,看起来是这样的: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,
<%: 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 ...
}
}