1

クエリ文字列からのパラメーターを持つ ObjectDataSource があります。次のエラーが表示されます:

Value was either too large or too small for an Int32.

クエリ文字列がデータ型に対して長すぎる可能性があります。InfoSheetID はデータベースから取り込まれます。エラーを防ぐために ObjectDataSource を使用または変更できる別のオプションはありますか?

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
OldValuesParameterFormatString="original_{0}" 
        SelectMethod="GetInfoByInfoID" 
        TypeName="BLL.InfoViewBLL">
        <SelectParameters>
            <asp:QueryStringParameter DefaultValue="2148663911" Name="InfoSheetID" 
                QueryStringField="InfoSheetID" Type="Int32" />
        </SelectParameters>
    </asp:ObjectDataSource>
4

1 に答える 1

2

Int32.MaxValueは2'147'483'647であり、使用する2'148'663'911よりも低くなっています。

タイプをInt64に変更するか、コードをリファクタリングして、それほど大きな値を使用しないようにすることができます。

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
OldValuesParameterFormatString="original_{0}" 
        SelectMethod="GetInfoByInfoID" 
        TypeName="BLL.InfoViewBLL">
        <SelectParameters>
            <asp:QueryStringParameter DefaultValue="2148663911" Name="InfoSheetID" 
                                                    ^^^^^^^^^^
                QueryStringField="InfoSheetID" Type="Int64" />
                                                     ^^^^^
        </SelectParameters>
    </asp:ObjectDataSource>
于 2013-03-09T20:15:18.127 に答える