我正在尝试使用MVC中的HTML.DropDownList并且没有获得预期的返回值。这是我的selectList绑定到下拉列表的实现 -
IEnumerable<status> stat = _provider.GetAllStatuses();
Statuses = new SelectList(stat.ToList(), "id", "name", i.status.id);
这是我的观点 -
<%= Html.DropDownList("Status",Model.Statuses) %>
尝试在控制器中运行updatemodel时出错。然后我尝试单独设置每个对象。事实证明,我没有像我期望的那样从formvalue中获得单个int。相反,我得到一个像“5,10,2,3”的值。我认为这是来自我如何设置我的选择列表,但我不完全确定。任何人都可以在我设置此dd的方式中看到错误吗?
感谢您的帮助,如果我能澄清一切,请告诉我。
答案 0 :(得分:0)
我就是这样做的:
var stat = _provider.GetAllStatuses();
myViewDataObject.Statuses = new SelectList(stat, "id", "name", i.status.id);
stat是IEnumerable
。状态属于SelectList
类型。如果您从提供商处返回ToList()
或IEnumerable
,则不需要IQueryable
。
我的观点继承自
System.Web.Mvc.Viewpage<MyProject.Models.MyViewDataClass>
看起来像这样:
class MyViewDataClass
{
public int StatusID { get; set; }
public SelectList Statuses { get; set; }
}
在控制器中,我接受一个FormsCollection对象,并使用模型绑定器来更新它:
public ActionResult Edit(FormCollection collection)
{
var myViewDataObject = new MyViewDataClass();
UpdateModel(myViewDataObject);
}
的更多信息
答案 1 :(得分:0)
post方法的签名是什么样的?它(或模型)应该具有一个定义为int的Status属性。我怀疑你有更多的代码,而不是你向我们展示的是列出页面上所有可能的状态(隐藏字段?),这就是你所看到的以一系列整数发回的内容。
它应该类似于:
public ActionResult PostAction( int status, .... )
{
... status will contain the selected value from the dropdown ...
}