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