我发现了很多有关此事的帖子,但没有一个人在解决我的问题。我的代码现在:
@Html.ListBox("SelectedNewsletter", Model.Newsletters)
和
public MultiSelectList Newsletters
{
get
{
return new MultiSelectList(
new[]
{
// TODO: Fetch from your repository
new { Id = 1, Name = "item 1" },
new { Id = 2, Name = "item 2" },
new { Id = 3, Name = "item 3" },
},
"Id",
"Name"
);
// return new MultiSelectList(PromoNewsletter.All, "IdString", "Display");
}
}
据我所见,它现在都是硬编码,它仍然会出现同样的错误。我想做一个ListboxFor,但我想让一个列表框工作。我已根据我在别处找到的建议用字符串表示替换了我的int id,但现在我看不出还能做什么。即使使用所有硬编码值并且没有绑定到我的ViewModel上的属性,它只是简单无法工作。我哪里错了?
答案 0 :(得分:3)
发生错误是因为您在模型或 ViewData / ViewBag 中有一个名为SelectedNewsletter
的属性。
如果您无法重命名该属性,请为ListBox
指定其他名称。
<强>更新强>
经过多一点实验后,我发现问题是您可能正在设置 ViewData / ViewBag 或模型中<{1}}的整数值。
您可以将ListBox中必须选择的值设置为SelectedNewsletter
的字符串或字符串数组。
即SelectedNewsletter
或
SelectedNewsletter = "1";
您还可以使用强类型助手来简化操作,
SelectedNewsletter = new[] { "1", "3" };