8

ID と名前をデータとして持つタイプのストアド プロシージャのリストがあります。モデルに int 型のプロパティと同じストアド プロシージャのリストがあります。今、この情報を ListBoxFor にバインドしたい

ビューで私はこれを書いた

@Html.ListBoxFor(x => x.HobbyId, new MultiSelectList(Model.listHobby, "pkHobbyId", "Hobby"))

しかし、私はエラーが発生しています

複数選択が許可されている場合、パラメーター「expression」は IEnumerable に評価される必要があります。

バインド方法を教えてください。

4

3 に答える 3

7

それを試してください

@Html.ListBoxFor(x => x.HobbyId, Model.listHobby.Select(f => new SelectListItem { Text = f.Hobby, Value = f.pkHobbyId.ToString() }), new { Multiple = "multiple" }) 

listHobby は私のサンプルの iEnumerable リストです


誤解を招いた場合は申し訳ありませんが、急いで回答しましたが、マルチ選択リストボックスの結果をguidまたはint変数に取得することはできません(HoobyIdのタイプに関係なく)次のような結果を取得するための配列が必要です

public string[] SelectedHobbyIds { get; set; }

ビューモデルに何か問題があるに違いないので、ビューモデルを投稿してチェックすることをお勧めします

于 2012-04-05T13:00:28.743 に答える
5

@チャトラパティシャルマ、

コントローラで、これを試してください、

ViewData['anyName'] = new SelectList {
 Text = ,  // text from ur function
 Value = , // Value from function
 Selected = // if required
}

ビューで、次のようにviewdataをバインドします。

 <@Html.ListBox("docImages", ((IEnumerable<SelectListItem>)ViewData["anyName"]))

テストのために、次のようにサンプルの選択リスト項目を試してください。

ViewData['anyName'] = new List<SelectListItem>{ 
                new SelectListItem {Text = "First", Value = "0"}, 
                new SelectListItem {Text = "Second"), Value = "1"}, 
                new SelectListItem {Text = "Third", Value = "2"} 
                    };

このサンプルが機能する場合は、関数 "_supp.listDocImages()"をチェックして、IListが返されることを確認してください。

于 2013-01-14T10:02:11.060 に答える
3
@Html.ListBoxFor(x => x.HobbyId, Model.listHobby.Select(f => new SelectListItem { Text = f.Hobby, Value = f.pkHobbyId.ToString() }), new { Multiple = "multiple" }) 

複数選択を設定しているため、式の HobbyId は列挙可能でなければなりません

于 2012-04-05T13:51:26.130 に答える