2012-11-15 42 views
0

我聲明如下的ObjectDataSource錯誤通過的ObjectDataSource傳遞ListItemCollection到定製適配器

<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> 

控制是問題被聲明LocationCodes這樣的:

<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> 

服務器側Select方法上適配器是這樣定義的:

[DataObjectMethod(DataObjectMethodType.Select, true)] 
public List<Payment> GetPayments(
    DateTime startDate, 
    DateTime endDate, 
    object selectedLocationCodes) 
{ 
} 

現在,即使ListItemCollection成功地傳遞到Select方法,並在Select方法的代碼沒有錯誤可以處理,仍在被動地Application_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. 

回答

0

好了,所以我解決了這個方式是通過添加此ViewStateMode="Disabled"轉向ViewStateObjectDataSource元素。

0

問題是你不能序列化一個對象。如果你要改變 「object selectedLocationCodes」到某種預定義的類,那麼應該沒有問題。 爲了一個對象被序列化,它基本上需要被分解成XML,這意味着它需要知道每個字段是什麼類型的數據。對象沒有足夠的描述,因爲它可以是任何東西。

相關問題