mvc应用程序中的dropdownlist问题

时间:2010-04-13 14:13:16

标签: asp.net-mvc

我正在尝试使用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的方式中看到错误吗?

感谢您的帮助,如果我能澄清一切,请告诉我。

2 个答案:

答案 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);
}

http://nerddinnerbook.s3.amazonaws.com/Part6.htm

的更多信息

答案 1 :(得分:0)

post方法的签名是什么样的?它(或模型)应该具有一个定义为int的Status属性。我怀疑你有更多的代码,而不是你向我们展示的是列出页面上所有可能的状态(隐藏字段?),这就是你所看到的以一系列整数发回的内容。

它应该类似于:

 public ActionResult PostAction( int status, .... )
 {
   ... status will contain the selected value from the dropdown ...
 }