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