QueryStringParameters不能在ASP.Net上工作objectDataSource
问题描述:
我似乎无法得到QueryStringParameters在ASP.Net webforms中使用ObjectDataSource。似乎我已经完成了一百万次,但无法弄清楚为什么以下方法根本无法工作(参数完全被忽略,尽管如果我在PageLoad事件中测试查询字符串被读取)。QueryStringParameters不能在ASP.Net上工作objectDataSource
<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,最大值始终为-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
而且他们是正确的 - 的URL看起来像这样:
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(已经有一段时间,因为我已经不得不编辑一些旧的webforms),所以我想我忘了其他的东西来让SelectParameters工作。 任何想法?
答
我想通了。分页已启用。 ODS QueryString选择参数在分页打开时被忽略。 显然,控件在内部有它自己的查询字符串参数(为什么GridView & ListView对于开箱即用的SEO来说太可怕了 - 您必须从代码隐藏中做到这一点)。