![](/img/trans.png)
[英]Model with collection - Html.ListBoxFor doesn't set selected items
[英]Html.ListBoxFor not selecting Items
首先,我正在使用MVC 2.0。 我在使用发回控制器的Multiselect列表框进行选择时遇到麻烦。 这是我的代码:
模型
public class TestModel
{
public MultiSelectList AvailableTestTypes { get; set; }
public List<TestType> SelectedTestTypes { get; set; }
}
public class TestType
{
public long Id { get; set; }
public string Name { get; set; }
public bool isActive { get; set; }
}
控制者
public ActionResult Index(TestModel model)
{
if (model == null) model = new TestModel();
List<TestType> testList = new List<TestType>()
{
new TestType() { Id = 1, Name = "TESTING", isActive = true },
new TestType() { Id = 2, Name = "TESTING2", isActive = true },
new TestType() { Id = 3, Name = "TESTING3", isActive = true }
};
model.AvailableTestTypes = testList; //TODO: Fetch From Repository
return View(model);
}
[HttpPost]
public ActionResult PostForm(TestModel model)
{
List<long> act = model.SelectedTestTypes != null ? model.SelectedTestTypes.Select(x => x.Id).ToList() : new List<long>();
视图
<%= Model != null && Model.AvailableTestTypes != null ?
Html.ListBoxFor(x => x.SelectedTestTypes,
new MultiSelectList(Model.AvailableTestTypes, "Id", "Name", Model.SelectedTestTypes),
new { @id = "testListboxId", @class = "blah", @title = "title" }) : null%>
发布到控制器后,无论我选择多少,我的选定列表数均为0 ...这是怎么了?
我尝试了一些不同的解决方案,例如在ListBoxFor中选择值的Challenges,但没有任何效果:(
您的脚本与其他脚本中的示例之间的区别在于,您尝试绑定到列表,而不是int []。
当您要填充多选列表框时,必须设置一个DataValueField和一个DataTextfield,否则不设置任何值。
model.AvailableTestTypes = new MultiSelectList(testList, "Id", "Name);
然后尝试使用此类:
public class TestModel
{
public MultiSelectList AvailableTestTypes { get; set; }
public int[] SelectedTestTypes { get; set; }
}
在您的PostForm操作中,您可以使用ID检索TestType。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.