为什么模型绑定不能在 DropDown 上工作?
我究竟做错了什么?
为了说明我的问题,我做了以下事情:
创建了一个新的 asp.net MVC 项目(beta1) 创建了以下类:
HomeViewData : ViewDataDictionary
+List : SelectList
向 HomeController 类添加了一个视图数据,如下所示
Homecontroller: Controller
+HomeViewData vd = new HomeViewData
将以下行添加到我的 Home.Index() 方法中
vd.list = new SelectList(new List<string>(){"test", "test1", "test2"});
return View("Index", vd);
并复制了相同的方法,但使用不同的签名来捕获回发调用
[AcceptVerps(HttpVerbs.Post)]
public ActionResult Index(HomeViewdata d)
这里我在第一行代码中添加了一个断点。
然后我将以下代码添加到我的 Index.aspx
<%Html.BeginForm();%>
<%=Html.DropDownList("List")%>
<%Html.EndForm();%>
结果,我得到了一个包含值 test、test1 和 test2 的漂亮下拉列表的页面。
然后在选择一个值后,我按下回车键(不用提交按钮),看看我的断点是如何停止代码的。我检查 HomeViewData 的值...
NULL
如果我做同样的练习,但例如使用文本框,一切都很好......
--EDIT--
自从这篇文章以来我尝试过的事情:
- 按照 Phil 的建议,在我的操作中添加 [Bind(Prefix="")] 属性
- 添加 [Bind(Prefix=" ")] 以查看这是否会消除“不允许使用空名称”的错误
- 在我的控件名称中添加我的操作参数的名称