QueryStringParametersをASP.Net Webフォームの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であり、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
そして彼らは正しいです - そのように見えるURL:
http://localhost:49322/default?sri=5&rows=10
方法ヘッダー:私はしたので、私はMVCに移動した
<DataObjectMethod(DataObjectMethodType.Select, True)>
Public Shared Function GetProductsByPageSort(ByVal startRowIndex As Integer, ByVal maximumRows As Integer) As DataTable
は(しばらくして古いWebフォームを編集しなければならなかったので)、SelectParametersを動作させるために何か他のものを忘れてしまったと思います。 アイデア