2017-07-27 25 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來說太可怕了 - 您必須從代碼隱藏中做到這一點)。

相關問題