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
Post a Comment