0

私はObjectDataSourceこのように宣言しました:

<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)
{
}

これで、がメソッドに正常に渡され、メソッド内のコードがエラーなしで処理できる場合でもListItemCollectionSelectSelect、次のエラーがで受動的にスローされ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.
4

2 に答える 2

0

さて、これを解決する方法は、これを追加して要素をViewStateオフにすることでした。ObjectDataSourceViewStateMode="Disabled"

于 2012-11-19T17:03:03.493 に答える
0

問題は、オブジェクトをシリアル化できないことです。「 objectselectedLocationCodes」をある種の事前定義されたクラスに変更する場合、問題はないはずです。オブジェクトをシリアル化するには、基本的にXMLに分解する必要があります。つまり、各フィールドがどのタイプのデータであるかを知る必要があります。オブジェクトは何でもかまいませんので、十分に具体的な説明ではありません。

于 2013-01-03T13:42:58.673 に答える