【问题标题】:problem with dropdownlist in mvc applicationmvc应用程序中的下拉列表问题
【发布时间】:2010-04-13 14:13:16
【问题描述】:

我正在尝试在 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 的方式有错误?

感谢您的帮助,如果我能澄清任何事情,请告诉我。

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

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

    它应该看起来像:

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

    【讨论】:

    • 我发现了问题 - 我有多个 dd 列表,我不小心将一些标签与我的状态框相同。谢谢。
    【解决方案2】:

    这就是我的做法:

    var stat = _provider.GetAllStatuses(); 
    myViewDataObject.Statuses = new SelectList(stat, "id", "name", i.status.id); 
    

    stat 是IEnumerable。状态的类型为SelectList。如果您从提供商处返回 IEnumerableIQueryable,则不需要 ToList()

    我的视图继承自

    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

    【讨论】:

    • 感谢您的帮助 - 这与我的设置方式非常相似。原来是我的aspx页面出错了。
    猜你喜欢
    • 1970-01-01
    • 2016-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-17
    • 1970-01-01
    • 2011-04-01
    • 1970-01-01
    相关资源
    最近更新 更多