ASP.net对象源参数
我有一个ObjectDataSource,其中包含一个查询字符串中的参数。我收到以下错误:ASP.net对象源参数,asp.net,objectdatasource,Asp.net,Objectdatasource,我有一个ObjectDataSource,其中包含一个查询字符串中的参数。我收到以下错误:值对于Int32太大或太小。我认为查询字符串对于其数据类型可能太长。InfoSheetID是从数据库填充的。我是否可以选择或修改ObjectDataSource以防止错误 <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" OldValuesParameterFormatString="original_{0}"
值对于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>
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>
^^^^^
谢谢。我尝试了此操作,但出现以下错误。类型为“System.Int64”的对象无法转换为类型为“System.Int32”。
在配置数据源中,当要求选择方法时,它只有GetInfoByInfoID(Int32 InfoSheetID),返回可用的InfoDataTable选项。没有Int64。错误是DefaultValue=“2148663911”。确保你真的需要这个号码。此外,还可以使用string代替Int32,并为GetInfoByInfoID()方法生成int.TryParse()。无论如何,我希望看到默认值==0或-1,这取决于任务。我只使用默认值来显示查询字符串的编号。它将被删除,没有默认值。我将尝试TryParse(),它看起来像是一个数据库使用long for Id。你能更新GetInfoByInfoID()方法来接收int64吗?我让它工作了。我将我的业务逻辑类中的公共函数改为<代码>(ByValIfSoHeTeD作为It64),作为IoFoDATABATION.<代码>谢谢您的帮助。以及潜在的长度问题,考虑如何处理由用户输入的任意非整数值。例如267.52或“你好”。在大多数情况下,这不会是一个问题,但在这些情况下,盲目地强制转换值将导致异常,并且查询字符串特别容易更改。