gpt4 book ai didi

c# - MVC ListBox 多项选择在发布时 Controller 中只有一个值

转载 作者:太空狗 更新时间:2023-10-30 01:04:45 27 4
gpt4 key购买 nike

我一直在遵循一些关于列表框的指导并尝试正确处理选择。困扰我的是我似乎无法找到相关 Material 是访问所选的值。可能只会选择一个,但很可能一次会选择多个。

我的后 Controller 正在获取对象模型,它具有所选项目之一但不是所有项目的值?我是否需要像其他文章所说的那样在发布之前运行一些 jquery?似乎不对,但也许……

我的模型:

public partial class ExtrnlSubsModel : BaseEntityModel
{
public IList<SelectListItem> AvailableForums { get; set; }
public int ExtForumId { get; set; }
}

我的 Razor :

@Html.ListBoxFor(model => model.ExtForumId, Model.AvailableForums, new { style = "width:500px;height:250px" })
@Html.RequiredHint()
@Html.ValidationMessageFor(model => model.ExtForumId)

我的 Controller :

[HttpPost]
public ActionResult ExtForumAdd(ExtrnlSubsModel model)
{ .... }

所以正如我提到的,我的模型得到了填充,但尽管按住 ctrl 键并单击了许多项目,但只有一个选择。

TIA

最佳答案

更改您的模型以使用 MultiSelect 和一个整数数组来选择这样的项目(为简单起见,部分删除):

public class ExtrnlSubsModel
{
public MultiSelectList AvailableForums { get; set; }
public int[] ExtForumIds { get; set; }
}

将您的列表框更改为此,首先使用您的 ints 属性数组:

@Html.ListBoxFor(model => model.ExtForumIds, Model.AvailableForums, new { style = "width:500px;height:250px" })

出于测试目的, Controller 获取操作:

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);
}

后 Action :

[HttpPost]
public ActionResult Index(ExtrnlSubsModel model)
{
var selectedItems = model.ExtForumIds;
return View(model);
}

我还使用了一个测试 SelectItem 进行演示,这将是您要返回的对象:

public class SelectItem
{
public int Id { get; set; }
public string Name { get; set; }
}

所选项目的图片回传如下:

Screen grab

关于c# - MVC ListBox 多项选择在发布时 Controller 中只有一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21831176/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com