QueryStringParameters 在 ASP.Net objectDataSource 上不起作用

Posted

技术标签:

【中文标题】QueryStringParameters 在 ASP.Net objectDataSource 上不起作用【英文标题】:QueryStringParameters not working on ASP.Net objectDataSource 【发布时间】: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 工作的其他东西。 有什么想法吗?

【问题讨论】:

【参考方案1】:

我想通了。分页已启用。 打开分页时忽略 ODS QueryString Select 参数。 显然,该控件在内部有自己的查询字符串参数(为什么 GridView 和 ListView 对于开箱即用的 SEO 来说是可怕的 - 你必须从代码隐藏中做到这一点)。

【讨论】:

以上是关于QueryStringParameters 在 ASP.Net objectDataSource 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

前端请求后端数据有哪些方法?

空字典作为 dict.get() 的默认值

Postman请求发送—PUT&DELETE

.Net WebAPI+Jquery Ajax 请求参数

动态加载数据抓取-Ajax

小程序发起post请求回调成功没有数据