0

我找到了很多关于这个的帖子,但没有一个能解决我的问题。我现在的代码:

@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 上的属性,它也无法正常工作。我哪里错了?

4

1 回答 1

3

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

ListBox如果您无法重命名该属性,请为该属性指定一个不同的名称。

更新:

经过更多的实验,我发现问题是您可能正在将一个整数值设置为ViewData/ViewBagModelSelectedNewsletter中的某处。

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

IESelectedNewsletter = "1";

或者

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

你也可以使用强类型的助手来让事情变得简单,

@Html.ListBoxFor(m => m.SelectedNewsletter, Model.NewsLetters);
于 2012-07-27T04:02:27.750 回答