ASP.net ObjectSource参数

时间:2013-03-09 20:10:19

标签: asp.net objectdatasource

我有一个带有查询字符串参数的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>

1 个答案:

答案 0 :(得分: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>