为了账号安全,请及时绑定邮箱和手机立即绑定

MVC 5下拉列表用于编辑视图中的多选值绑定

MVC 5下拉列表用于编辑视图中的多选值绑定

C#
慕的地6264312 2022-07-10 16:36:08
我在编辑视图中有一个 select2 多选下拉菜单。当我尝试将选定的值绑定到下拉列表时,它无法绑定。任何帮助表示赞赏。请从 *.cshtml 和 *.cs 文件中找到以下代码片段。@Html.DropDownListFor(model => model.Items, new MultiSelectList(ViewBag.ItemsBag, "Value", "Text", Model.ItemsSelected.Select(x => x.Value)), new { @class = "form-control features-segments select2-multiselect-checkbox", multiple = "multiple" })ViewBag.ItemsBag = db.Items.Select(v => new SelectListItem            {                Text = v.ItemName,                Value = v.ItemId.ToString()            });ModelVM modelVM = new ModelVM()            {                ItemsSelected = SelectedItems.Items.Select(x => new SelectListItem() { Text = x.ItemName, Value = x.ItemId.ToString() })            };项目模型有以下项目。属性 ItemsSelected 不为空,其中包含 3 个值,并且 ViewBag.ItemsBag 也不为空,并且包含数据库中的所有项目。这两个属性都是具有 Text 和 Value 属性的 SelectListItem 类型。public int FeatureId { get; set; }public string FeatureName { get; set; }public string ReferenceName { get; set; }public FeatureSection SectionName { get; set; }//Enumpublic FeatureType Type { get; set; }//Enumpublic bool DefaultBoolValue { get; set; }public string DefaultTextValue { get; set; }public IEnumerable<SelectListItem> ItemsSelected { get; set; }public virtual ICollection<Item> Items { get; set; } = new List<Item>();
查看完整描述

2 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

由于您在ViewBag定义中提供了这样的项目值,这清楚地表明了字符串值:


ViewBag.ItemsBag = db.Items.Select(v => new SelectListItem

{

    Text = v.ItemName,

    Value = v.ItemId.ToString() // implies all values are strings

});

然后与DropDownListFor/绑定的属性ListBox必须具有List<string>或string[]类型才能正确绑定。usingICollection<Item>不会绑定,因为它是一个复杂的对象,而 helper 需要值类型(数字类型/字符串)才能绑定。


因此,您必须首先创建具有类型的属性List<string>:


public List<string> SelectedValues { get; set; }

然后使用ListBoxFor具有该属性的助手:


@Html.ListBoxFor(model => model.SelectedValues, new MultiSelectList(ViewBag.ItemsBag, "Value", "Text", Model.ItemsSelected.Select(x => x.Value)), new { @class = "form-control features-segments select2-multiselect-checkbox", multiple = "multiple" })

笔记:


如果ItemId属性具有int类型(并且所有值都可以转换为int),请尝试使用List<int>/int[]类型而不是List<string>/ string[]:


public List<int> SelectedValues { get; set; }


查看完整回答
反对 回复 2022-07-10
?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

请在 jQuery 的文档就绪状态下尝试以下代码:

var result = [1,3,5];// Array of SelectedValues$("#DropdownID").val(result); // DropdownID = your multi select dropdown Id


查看完整回答
反对 回复 2022-07-10
  • 2 回答
  • 0 关注
  • 87 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信