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

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

mediawiki - How do I insert tables inside infoboxes on Wikia pages? -

Local Service User Logged into Windows -