【发布时间】:2018-01-02 14:13:26
【问题描述】:
我似乎无法让 QueryStringParameters 与 ASP.Net 网络表单中的 ObjectDataSource 一起使用。好像我已经这样做了一百万次,但无法弄清楚为什么以下内容根本不起作用(参数被完全忽略,尽管如果我在 PageLoad 事件中测试查询字符串正在被读取)。
<asp:ObjectDataSource ID="ods1" runat="server" EnablePaging="True" OldValuesParameterFormatString="original_{0}" SelectCountMethod="GetProductsCount" SelectMethod="GetProductsByPageSort" TypeName="ExpressSelect.ProductData" DataObjectTypeName="ExpressSelect.SearchProduct">
<SelectParameters>
<asp:QueryStringParameter DefaultValue="0" Name="startRowIndex" QueryStringField="sri" Type="Int32" />
<asp:QueryStringParameter DefaultValue="10" Name="maximumRows" QueryStringField="rows" Type="Int32" />
</SelectParameters>
</asp:ObjectDataSource>
传递给方法的 startRowIndex 的值始终为 0,maximumRows 始终为 -1(即使默认值应为 10)。
为了确保查询字符串被正确读取,我运行了以下命令以确保值确实存在。
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
Dim sri As String = Request.QueryString("sri")
Dim rows As String = Request.QueryString("rows")
End Sub
他们是正确的 - 网址看起来像这样:
http://localhost:49322/default?sri=5&rows=10
方法头:
<DataObjectMethod(DataObjectMethodType.Select, True)>
Public Shared Function GetProductsByPageSort(ByVal startRowIndex As Integer, ByVal maximumRows As Integer) As DataTable
我已经迁移到 MVC(因为我不得不编辑一些旧的网络表单已经有一段时间了),所以我想我只是忘记了让 SelectParameters 工作的其他东西。 有什么想法吗?
【问题讨论】:
标签: asp.net webforms objectdatasource querystringparameter