0

レジスタービューに緊密にバインドされたレジスターモデルがあります。レジスタモデルにはselectlistitempopertyがあります。ドロップダウンボックスに選択リストアイテムを入力するのに問題があります。

var users = Roles.GetAllRoles();

model.UserRoles = users.Select(m => new SelectListItem()
{Value = m.ToString(),Text = m.ToString()})

@Html.DropDownListFor(r=>r.ToString(),Model.UserRoles,"Select Role")
4

2 に答える 2

0

次のように、選択した値をモデルのプロパティにバインドする必要があります。

(モデル内):

public string ActiveRole { get; set; }

..。

(あなたの見解で):

@Html.DropDownListFor(m => m.ActiveRole, Model.UserRoles,"Select Role")
于 2012-04-04T09:40:49.610 に答える
0

メソッドの最初の引数はDropDownListFor、リストの値を保持するプロパティです。リスト内の値がロールのIDになる場合、これには引数x => x.RoleIdが必要です。ここでx、はモデルであり、RoleIdはモデルのプロパティです。ドロップダウンリストをビューモデルの文字列表現にバインドしているため、結果はガベージになります。

2番目の引数はIEnumerable<SelectListItem>、リストのオプションを保持する引数です。このオブジェクトの値は次のとおりです。Valueサーバーに返送される値です。これは、役割を識別するものである必要があり、多くの場合、役割のIDです。Textリストに表示されるテキストであり、ユーザーに表示されるものです。Selectedリスト内のどの項目が選択されているかを示すブール値です。すべてのでfalseSelectListItemの場合、一番上のものが選択されます。これは標準のHTMLの動作です。

あなたの場合、SelectListItemモデルにsを配置します。これは不要な手順ですが、機能するはずです。ただし、モデルバインダーは最初の引数を理解しないため、それを修正する必要があります。

于 2012-04-04T09:53:56.113 に答える