Asp.net mvc 3 MultiSelectList不返回视图数据
我的视图中有一个多选列表,用于向控制器发送用户列表。我的视图接收用户,但不发送回控制器。我错过了什么 我的控制器是:Asp.net mvc 3 MultiSelectList不返回视图数据,asp.net-mvc-3,razor,Asp.net Mvc 3,Razor,我的视图中有一个多选列表,用于向控制器发送用户列表。我的视图接收用户,但不发送回控制器。我错过了什么 我的控制器是: // GET: public ActionResult Create(User user) { ViewModel model = new ViewModel(); Interaction interact = new Interaction(); model.Users= Repository.
// GET:
public ActionResult Create(User user)
{
ViewModel model = new ViewModel();
Interaction interact = new Interaction();
model.Users= Repository.GetUsers();
model.Interacao = interact;
return View( model );
}
在我看来,列表框是:
@Html.ListBoxFor( model => model.Users, new MultiSelectList( Model.Users, "Id", "Name" ) )
有人能告诉我哪里错了吗?您不应该绑定model.Users作为第一个参数,因为这表示一个列表。第一个参数需要是一个字符串/整数数组,该数组将包含选定的值: 例如:
public class MyViewModel
{
pubilc string[] SelectedUserIds { get; set; }
public IEnumerable<UserViewModel> Users { get; set; }
}
public class UserViewModel
{
public string Id { get; set; }
public string Name { get; set; }
}
它将成功绑定到:
[HttpPost]
public ActionResult Index(string[] selectedUserIds) { ... }
或:
当然,在第二种情况下,您只能填充SelectedUserID属性,因为这是从视图发送的唯一内容。例如,如果由于模型错误需要重新显示同一视图,则需要重新填充vie模型的Users集合属性,因为它不会被持久化。您不应该将model.Users作为第一个参数绑定,因为这表示一个列表。第一个参数需要是一个字符串/整数数组,该数组将包含选定的值: 例如:
public class MyViewModel
{
pubilc string[] SelectedUserIds { get; set; }
public IEnumerable<UserViewModel> Users { get; set; }
}
public class UserViewModel
{
public string Id { get; set; }
public string Name { get; set; }
}
它将成功绑定到:
[HttpPost]
public ActionResult Index(string[] selectedUserIds) { ... }
或:
当然,在第二种情况下,您只能填充SelectedUserID属性,因为这是从视图发送的唯一内容。例如,如果由于模型错误需要重新显示同一视图,则需要重新填充vie模型的Users集合属性,因为它不会被持久化