Sunday 15 August 2010

asp.net mvc 4 - @HhtmlDropdown throw SerializationException Exception -



asp.net mvc 4 - @HhtmlDropdown throw SerializationException Exception -

i have form has dropdownlist. using sqlserver state mode save session in sql server. form displayed correctly; however, throws exception during form submission. i've been looking , tried of suggested reply posted online no luck. doing wrong here?

//this section building selectlist item in controller var listdepartment = manageusersmembership.getdepartment(sessionwrapper.studentbooktrade.selectedschoolid); // book.departmentlist = listdepartment; //new selectlist(listdepartment, "departmentid", "departmentname", sessionwrapper.studentbooktrade.selecteddepartmentid); list<selectlistitem> ldepartment = new list<selectlistitem>(); foreach (var item in listdepartment) { if (sessionwrapper.studentbooktrade.selecteddepartmentid > 0 && item.departmentid == sessionwrapper.studentbooktrade.selecteddepartmentid) { ldepartment.add(new selectlistitem { text = item.departmentname, value = item.departmentid.tostring(), selected = true }); } else { ldepartment.add(new selectlistitem { text = item.departmentname, value = item.departmentid.tostring() }); } } book.departmentlist = ldepartment; //this property in model: public virtual ienumerable<selectlistitem> departmentlist { get; set; } //this html code in view: @html.dropdownlistfor(model => model.departmentid, new selectlist(model.departmentlist, "value", "text"), "select department", new {@class="form-control", id="departmentid", onchange = "valueselected()" }) @html.validationmessagefor(model => model.departmentid) //the exception unable serialize session state. in 'stateserver' , 'sqlserver' mode, asp.net serialize session state objects, , result non-serializable objects or marshalbyref objects not permitted. same restriction applies if similar serialization done custom session state store in 'custom' mode. description: unhandled exception occurred during execution of current web request. please review stack trace more info error , originated in code. exception details: system.web.httpexception: unable serialize session state. in 'stateserver' , 'sqlserver' mode, asp.net serialize session state objects, , result non-serializable objects or marshalbyref objects not permitted. same restriction applies if similar serialization done custom session state store in 'custom' mode. source error: unhandled exception generated during execution of current web request. info regarding origin , location of exception can identified using exception stack trace below. stack trace: [serializationexception: type 'system.web.mvc.selectlist' in assembly 'system.web.mvc, version=4.0.0.1, culture=neutral, publickeytoken=31bf3856ad364e35' not marked serializable.] system.runtime.serialization.formatterservices.internalgetserializablemembers(runtimetype type) +10751795 system.runtime.serialization.formatterservices.getserializablemembers(type type, streamingcontext context) +230 system.runtime.serialization.formatters.binary.writeobjectinfo.initmemberinfo() +121 system.runtime.serialization.formatters.binary.writeobjectinfo.initserialize(type objecttype, isurrogateselector surrogateselector, streamingcontext context, serobjectinfoinit serobjectinfoinit, iformatterconverter converter, serializationbinder binder) +185 system.runtime.serialization.formatters.binary.objectwriter.write(writeobjectinfo objectinfo, nameinfo membernameinfo, nameinfo typenameinfo) +565 system.runtime.serialization.formatters.binary.objectwriter.serialize(object graph, header[] inheaders, __binarywriter serwriter, boolean fcheck) +446 system.runtime.serialization.formatters.binary.binaryformatter.serialize(stream serializationstream, object graph, header[] headers, boolean fcheck) +131 system.web.util.altserialization.writevaluetostream(object value, binarywriter writer) +1666 [httpexception (0x80004005): unable serialize session state. in 'stateserver' , 'sqlserver' mode, asp.net serialize session state objects, , result non-serializable objects or marshalbyref objects not permitted. same restriction applies if similar serialization done custom session state store in 'custom' mode.] system.web.util.altserialization.writevaluetostream(object value, binarywriter writer) +1754 system.web.sessionstate.sessionstateitemcollection.writevaluetostreamwithassert(object value, binarywriter writer) +34 system.web.sessionstate.sessionstateitemcollection.serialize(binarywriter writer) +628 system.web.sessionstate.sessionstateutility.serialize(sessionstatestoredata item, stream stream) +240 system.web.sessionstate.sessionstateutility.serializestoredata(sessionstatestoredata item, int32 initialstreamsize, byte[]& buf, int32& length, boolean compressionenabled) +62 system.web.sessionstate.sqlsessionstatestore.setandreleaseitemexclusive(httpcontext context, string id, sessionstatestoredata item, object lockid, boolean newitem) +135 system.web.sessionstate.sessionstatemodule.onreleasestate(object source, eventargs eventargs) +565 system.web.synceventexecutionstep.system.web.httpapplication.iexecutionstep.execute() +136 system.web.httpapplication.executestep(iexecutionstep step, boolean& completedsynchronously) +69

i think have much here. seek changing code way

public ienumerable<selectlistitem> departmentlist { get; set; }

i utilize list ienumerable should work too

then on view don't need cast list

@html.dropdownlistfor(model => model.departmentid, model.departmentlist, "select department", new {@class="form-control", id="departmentid", onchange = "valueselected()" })

the "for" helper map list you. see if helps

asp.net-mvc-4 razor serialization html.dropdownlistfor

No comments:

Post a Comment