I have an ObjectDataSource declared like this:
<asp:ObjectDataSource ID="PaymentsDataSource"
runat="server"
DataObjectTypeName="Payment"
TypeName="PaymentAdapter"
SelectMethod="GetPayments">
<SelectParameters>
<asp:ControlParameter ControlID="StartDate"
PropertyName="Text"
Name="startDate"
Type="DateTime" />
<asp:ControlParameter ControlID="EndDate"
PropertyName="Text"
Name="endDate"
Type="DateTime" />
<asp:ControlParameter ControlID="LocationCodes"
PropertyName="Items"
Name="selectedLocationCodes"
Type="Object" />
</SelectParameters>
</asp:ObjectDataSource>
The control is question is LocationCodes declared like this:
<select id="LocationCodes"
disabled="disabled"
runat="server"
class="chzn-container"
multiple=""
data-placeholder="Choose a Location Code(s)"
style="width: 100%;"
data-class="span10">
</select>
The server-side Select method on the adapter is defined like this:
[DataObjectMethod(DataObjectMethodType.Select, true)]
public List<Payment> GetPayments(
DateTime startDate,
DateTime endDate,
object selectedLocationCodes)
{
}
Now, even though the ListItemCollection is successfully passed into the Select method and the code in the Select method can process without error, the following error is still being thrown passively in Application_Error. Is there a way to ignore this error?
11/15/2012 13:37:49 168 (Machine=, App=34a846f1, Project=null, Dept=null, Thread=007, TraceLevel=1)
Exception Source: mscorlib
Exception Type: System.Runtime.Serialization.SerializationException
Exception Message: Type 'System.Web.UI.WebControls.ListItemCollection' in Assembly 'System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is not marked as serializable.
Okay, so the way I solved this was by turning
ViewStateoff on theObjectDataSourceelement by adding thisViewStateMode="Disabled".