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

ModelまたはViewData/ViewBagに という名前のプロパティがあるため、エラーが発生していますSelectedNewsletter

ListBoxプロパティの名前を変更できない場合は、別の名前を付けてください。

アップデート:

もう少し実験した後、 ViewData/ViewBagまたはModelSelectedNewsletterのどこかにある に整数値を設定している可能性があることが問題であることがわかりました。

ListBox で選択する必要がある値を、文字列または文字列の配列として に設定できますSelectedNewsletter

すなわちSelectedNewsletter = "1";

また

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

強く型付けされたヘルパーを使用して物事を簡単にすることもできます。

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