我一直有这个问题,一直无法找到解决我的问题的方法......
我有一个选择列表,我希望允许用户选择多个,并且我正在使用 ASP.NET。在最初选择它们之后,我希望他们能够稍后编辑他们的选择。使用 ListBoxFor 时,我无法填写所选值。我猜问题出在 MultiSelectList 上。
我尝试使用数组、列表和字典来包含选定的值,但在它生成的页面上从未选择任何内容。通过使用断点并拆分代码以便我可以看到 MultiSelectList,似乎 SelectedValues 属性始终与传递给构造函数的内容相同。
模型:
public class UniversityStrategicGoalsModel
{
public Dictionary<string, string> goals { get; set; }
public UniversityStrategicGoalsModel()
{
goals = new Dictionary<string, string>()
{
{"NA", "Not Applicable"},
{"1.1","1.1 blah blah blah"},
{"1.2","1.2 and many more strategic goals"}
};
}
}
控制器:
ProjectViewModel viewModel = new ProjectViewModel();
viewModel.Project = db.Projects.Find(id); // Gets unique project
viewModel.allGoals = new UniversityStrategicGoalsModel();
return View(viewModel);
看法:
@Html.ListBoxFor(model => model.Project.UniversityGoals, new MultiSelectList(Model.allGoals.goals, "Key", "Value", Model.Project.UniversityGoals.Split(','))
// An example of model.Project.UniversityGoals could be "1.1,1.2"
遵循此(使用对象列表而不是字典)没有帮助:http: //ittecture.wordpress.com/2009/04/30/tip-of-the-day-198-asp-net-mvc-listbox-控制/
我还尝试制作字典的克隆,但是当我选择的对象在一个数组中(并且再次在一个列表中)时,只使用我想要的项目并传入一个值数组(而不是键)。