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 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章