2017-07-27 27 views
0

我似乎无法得到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工作。 任何想法?

回答

0

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

相关问题