asp.net mvc - Model Binding Multiselect in MVC4 -



asp.net mvc - Model Binding Multiselect in MVC4 -

my class

public partial class reference { public reference() { this.reference1 = new hashset<reference>(); } public int[] permissions{ get; set;} public virtual icollection<reference> reference1 { get; set; } public int refid { get; set; } public string description { get; set; } }

and view

@using(@html.beginform()) { @model trials.classes.reference <table> <tr> <td colspan="2"> @html.dropdownlistfor(x => x.refid, @viewbag.role selectlist, new { @class = "dropdown" }) </td> <tr> <td colspan="2"> @html.listboxfor(x => x.permissions, @viewbag.permissions multiselectlist, new { @class = "chosen-select", data_placeholder = "choose permissions...", style = "width:500px;", tabindex = "4" } ) </td> </tr> <tr> <td><input type="submit" value="save" /></td> <td> <input type="button" value="cancel" onclick="closedialog()" /> </td> </tr> </table> }

and controller is

public actionresult editpermissions(int id) { viewbag.role = new selectlist(rep.getroles("roles"), "refid", "description"); viewbag.permissions = new selectlist(rep.getroles("perms"), "refid", "description"); reference r = db.reference.find(id); r.permissions = r.reference1.select(rf => rf.refid).toarray(); if (r == null) { homecoming httpnotfound(); } else { homecoming partialview("_editrole", r); } }

the problem multiselect list doesnt shows values coming db. fisr dropdown shows value coming datbase preselected in multidropdown shows empty.... want show preselected values in object , user can deselect or select more well.... in advance...

multiselectlist takes parameter indicate selected values , not supplying this. however, code written work normal selectlist, derived multiselectlist anyway. hence remove as multiselectlist view.

if there's reason i'm missing has multiselectlist need set selected items in controller. getting current values database first , set viewbag.permissions. like:

public actionresult editpermissions(int id) { viewbag.role = new selectlist(rep.getroles("roles"), "refid", "description"); reference r = db.reference.find(id); if (r == null) homecoming httpnotfound(); r.permissions = r.reference1.select(rf => rf.refid).toarray(); viewbag.permissions = new multiselectlist(rep.getroles("perms"), "refid", "description", r.permissions); homecoming partialview("_editrole", r); }

note @ nowadays set value on r before checking null. hence have null reference exception before hitting null check. i've re-ordered method prepare set selected values.

asp.net-mvc model-binding multi-select

Comments

Popular posts from this blog

php - How to pass multiple values from url -

xslt - DocBook 5 to PDF transform failing with error: "fo:flow" is missing child elements. Required content model: marker* -

database - php search bar when I press submit with nothing in the search bar it shows all the data -