【问题标题】:How do I bind multiple dropdownlists如何绑定多个下拉列表
【发布时间】:2012-03-31 11:18:49
【问题描述】:

我正在动态加载带有下拉列表的部分类。下拉列表代表一对多关系的多方面。一个人注册多个公寓。见下图。到目前为止,它的所有工作。但是,当我回发表单时,我希望默认模型绑定器将所有选定的值收集到视图模型中的列表中。

public class RegistrationViewModel
{
    public RegisterModel RegistrationData { get; set; }
    public List<OccupierApartment> OccupierApartment { get; set; }
    public SelectList ComplexesSelectList { get; set; }
    public SelectList OccupierTypeSelectList { get; set; }        
}

这是我的问题:视图中下拉列表的 lambda 语法是什么:类似这样,但它只获取列表中的第一项,而我需要获取所有选定的下拉列表:@Html.DropDownListFor( m => m.OccupierApartment[0].OccupierTypeID, Model.OccupierTypeSelectList, "-- 选择 --")

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 jquery razor asp.net-mvc-viewmodel


    【解决方案1】:

    我建议您查看 following article,它说明了一个自定义 HTML 帮助程序,该帮助程序适用于将元素动态添加到列表的场景。

    【讨论】:

    • 达林,我以前看过那篇文章。问题是我使用的是下拉列表而不是文本框。这就是我的问题的本质。使用下拉列表时如何绑定多个选定的值。
    • 我不想使用 Ajax 将页面发回(根据您发布的链接)的另一个原因是控制器中有重定向,在使用 Ajax 发布时不起作用。跨度>
    • 不管是文本框还是下拉列表,原理都是一样的。两者都绑定到视图模型上的标量属性。您可能需要对下拉菜单采取的唯一额外步骤是设置所选值。
    • 但这就是问题所在 - 该属性不是标量,它是一个集合:List OccupierApartment { get;放; }。我尝试在视图中遍历下拉列表,但我没有取回动态添加的下拉列表,尽管它们显示在页面上。
    • 也许你违反了标准约定:haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx?查看生成的源代码并确保您尊重它。您确定用于索引的i 变量增加了吗?
    猜你喜欢
    • 2021-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-06
    • 2019-09-15
    • 2011-02-10
    相关资源
    最近更新 更多