值不能为空。参数名称:MVC列表框中的源

时间:2012-07-27 02:23:02

标签: asp.net-mvc-3 listbox

我发现了很多有关此事的帖子,但没有一个人在解决我的问题。我的代码现在:

@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上的属性,它只是简单无法工作。我哪里错了?

1 个答案:

答案 0 :(得分:3)

发生错误是因为您在模型 ViewData / ViewBag 中有一个名为SelectedNewsletter的属性。

如果您无法重命名该属性,请为ListBox指定其他名称。

<强>更新

经过多一点实验后,我发现问题是您可能正在设置 ViewData / ViewBag 模型中<{1}}的整数值

您可以将ListBox中必须选择的值设置为SelectedNewsletter的字符串或字符串数​​组。

SelectedNewsletter

SelectedNewsletter = "1";

您还可以使用强类型助手来简化操作,

SelectedNewsletter = new[] { "1", "3" };