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