C# ListBoxFor不允许我选择多个项目MVC
当我运行代码时,一次只能选择一个项目,这很奇怪,因为“ListBoxFor()”用于选择多个项目,所以我想要的是: 选择多个项目 视图(Index.cshtml): 不能将C# ListBoxFor不允许我选择多个项目MVC,c#,html,asp.net-mvc,C#,Html,Asp.net Mvc,当我运行代码时,一次只能选择一个项目,这很奇怪,因为“ListBoxFor()”用于选择多个项目,所以我想要的是: 选择多个项目 视图(Index.cshtml): 不能将绑定到复杂对象的集合(这就是列表的含义)。发回一个简单值数组(在您的情况下,如果选择第一个和第三个选项,它将提交[1,3](所选选项的值) 您的模型需要绑定到IEnumerable属性 public class ModelVariables { public IEnumerable<int> Selecte
绑定到复杂对象的集合(这就是列表
的含义)。
发回一个简单值数组(在您的情况下,如果选择第一个和第三个选项,它将提交[1,3]
(所选选项的值)
您的模型需要绑定到IEnumerable
属性
public class ModelVariables
{
public IEnumerable<int> SelectedItems { get; set; }
public IEnumerable<SelectListItem> DropDownItems { get; set; }
}
旁注
DDFetchItems()
方法-its中删除Selected=true
被ListBoxFor()
方法忽略,因为它是
属性,您的绑定将决定所选内容选择列表
ListBoxFor()
方法(属性DropDownItems
已经是可数的很好,我让它工作了,但是,我无法预选项目,因为我无法从'int'转换为,SelectedItems=new List(){1,3},它想要代替'int',因为我更改了public IEnumerable SelectedItems{get;set;}您无法将其更改为
IEnumerable SelectedItems
-这永远不会像我解释的那样工作(您无法将
绑定到复杂对象的集合,如果您这样做,您的应用程序将失败)。它必须是IEnumerable SelectedItems
Ok。我还原了它,现在我在变量selectedmdItems=model.SelectedItems.Where(x=>x.Selected.Select)(x=>x.Text.ToList()中得到一个错误。);“int”不包含“Selected”的定义,并且没有扩展方法“Selected”接受类型为“int”no的第一个参数。您不理解。
将发回一个int
数组-因此,如果您选择第二个和第三个选项,那么在ost方法中,model.SelectedItems
将是[2,3]
。您不需要任何Linq
来获取所选值-您只需使用foreach(model.SelectedItems中选择的int){……}
哦,亲爱的。您需要重新填充SelectList
就是返回视图。请通读以了解
public class ModelVariables
{
public List<SelectListItem> DropDownItems { get; set; }
}
public static class Repository
{
public static List<SelectListItem> DDFetchItems()
{
return new List<SelectListItem>()
{
new SelectListItem(){ Text = "Dogs", Value = "1", Selected = true},
new SelectListItem(){ Text = "Cats", Value = "2"},
new SelectListItem(){ Text = "Death", Value = "3"}
};
}
}
[HttpGet]
public ActionResult Index()
{
ModelVariables model = new ModelVariables()
{
DropDownItems = Repository.DDFetchItems()
};
return View(model);
}
public class ModelVariables
{
public IEnumerable<int> SelectedItems { get; set; }
public IEnumerable<SelectListItem> DropDownItems { get; set; }
}
public ActionResult Index()
{
var ModelVariables= new ModelVariables()
{
DropDownItems = Repository.DDFetchItems(),
SelectedItems = new List<int>(){ 1, 3 } // to preselect the 1st and 3rd options
};
return View(model);
}
@Html.ListBoxFor(m => m.SelectedItems, Model.DropDownItems)