C# MVC列表框多个选择—在控制器上的post中只有一个值
我一直在遵循列表框的一些指导,并试图正确处理选择。让我感到困惑的是,我似乎无法在上找到相关材料,而是访问了所选的值。可能只选择了一个,但很可能一次会选择多个 我的post controller正在获取对象模型,它具有一个选定项目的值,但不是所有项目的值?我是否需要像其他文章所说的那样在发布前运行jquery?似乎不对,但也许 我的模型:C# MVC列表框多个选择—在控制器上的post中只有一个值,c#,asp.net,asp.net-mvc,asp.net-mvc-3,razor,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Razor,我一直在遵循列表框的一些指导,并试图正确处理选择。让我感到困惑的是,我似乎无法在上找到相关材料,而是访问了所选的值。可能只选择了一个,但很可能一次会选择多个 我的post controller正在获取对象模型,它具有一个选定项目的值,但不是所有项目的值?我是否需要像其他文章所说的那样在发布前运行jquery?似乎不对,但也许 我的模型: public partial class ExtrnlSubsModel : BaseEntityModel { public IList<Sel
public partial class ExtrnlSubsModel : BaseEntityModel
{
public IList<SelectListItem> AvailableForums { get; set; }
public int ExtForumId { get; set; }
}
我的控制器:
[HttpPost]
public ActionResult ExtForumAdd(ExtrnlSubsModel model)
{ .... }
所以,正如我提到的,我的模型会被填充,但只使用一个选项,尽管ctrl键单击了许多项
TIA更改您的模型,以便对所选项目使用
多选
和整数数组,如下所示(为简单起见,部分删除):
将列表框更改为此,首先使用ints属性数组:
@Html.ListBoxFor(model => model.ExtForumIds, Model.AvailableForums, new { style = "width:500px;height:250px" })
出于测试目的,控制器获取操作:
public ActionResult Index()
{
var items = new List<SelectItem>();
// These items would be set from your db
var items = new List<SelectItem>();
items.Add(new SelectItem { Id = 1, Name = "1" });
items.Add(new SelectItem { Id = 2, Name = "2" });
var selectedItems = new List<SelectItem>();
selectedItems.Add(new SelectItem { Id = 1, Name = "1" });
var model = new ExtrnlSubsModel();
// project the selected indexs to an array of ints
int[] selectedItemsArray = selectedItems.Select(s => s.Id).ToArray();
model.ExtForumIds = selectedItemsArray;
model.AvailableForums = new MultiSelectList(items, "ID", "Name", selectedItemsArray);
return View(model);
}
我还在演示中使用了一个testSelectItem
,这将是您返回的对象:
public class SelectItem
{
public int Id { get; set; }
public string Name { get; set; }
}
所选项目的图片张贴在下面:
非常感谢您的教育。我对mvc不是很了解,你非常完整的答案帮助我学习。非常感谢。你是说SelectItem还是打字错误?我找不到那个类或google名称空间?嗨,不,这只是一个示例类,带有我创建的Id和名称,因为我看不到你的类代码。答案中有这一点的来源。您可以使用已经有名称&Id的类。我想它应该类似于ExtFormId&FormName或数据库中的类似内容。:)好吧,因为我就是这么做的。谢谢
public ActionResult Index()
{
var items = new List<SelectItem>();
// These items would be set from your db
var items = new List<SelectItem>();
items.Add(new SelectItem { Id = 1, Name = "1" });
items.Add(new SelectItem { Id = 2, Name = "2" });
var selectedItems = new List<SelectItem>();
selectedItems.Add(new SelectItem { Id = 1, Name = "1" });
var model = new ExtrnlSubsModel();
// project the selected indexs to an array of ints
int[] selectedItemsArray = selectedItems.Select(s => s.Id).ToArray();
model.ExtForumIds = selectedItemsArray;
model.AvailableForums = new MultiSelectList(items, "ID", "Name", selectedItemsArray);
return View(model);
}
[HttpPost]
public ActionResult Index(ExtrnlSubsModel model)
{
var selectedItems = model.ExtForumIds;
return View(model);
}
public class SelectItem
{
public int Id { get; set; }
public string Name { get; set; }
}