C# 从下拉列表MVC 5传回多个选定值

C# 从下拉列表MVC 5传回多个选定值,c#,asp.net,asp.net-mvc,asp.net-mvc-5,multipleselection,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 5,Multipleselection,我有以下属性 public SelectList ListActivities { get; set; } // Will load all hobbies i,e football, golf etc and will be displayed in a dropdown public List<string> SelectedActivities { get; set; } // Trying to set with multiple selected values. 这是我

我有以下属性

public SelectList ListActivities { get; set; } // Will load all hobbies i,e football, golf etc and will be displayed in a dropdown

public List<string> SelectedActivities { get; set; } // Trying to set with multiple selected values.
这是我的看法

 <div class="col-lg-11">
   @Html.DropDownListFor(m => m.UserDetails.SelectedActivities, Model.UserDetails.ListActivities, "Please Select", new { @class = "form-control", multiple = "multiple", id = "listActivities" })
 </div>
我遇到的问题是,当我从“活动”下拉列表中选择多个选项,然后按页面上的“提交”并返回控制器时,所选活动为空


有人能解释一下吗?

对于multi-select,您应该使用而不是Html.DropDownListFor,因为Html.DropDownListFor返回单个选择元素

因此,要使其起作用,只需将您的视图更改为:

 <div class="col-lg-11">
   @Html.ListBoxFor(m => m.UserDetails.SelectedActivities, Model.UserDetails.ListActivities, "Please Select", new { @class = "form-control", id = "listActivities" })
 </div>

可能重复的已尝试查看Firebug或开发人员工具中提交的请求参数。检查值是否正确提交。此处显示的代码工作正常。注意:为多重选择包含Please Select参数是没有意义的。如果选中该参数,您将在SelectedActivities中获得一个空值,并且您应该使用ListBoxFor,它为您添加多重属性。@Html.DropDownListFor with multiple=multiple与@Html.ListBoxFor相同-两者都使用多重属性生成标记属性ListBoxFor保存了一些不必要的输入,但这一点都没有区别。你完全正确。我没有注意到多属性的用法