Je n'arrive pas à faire en sorte que QueryStringParameters fonctionne avec un objet ObjectDataSource dans les formulaires Web ASP.Net. On dirait que je l'ai fait un million de fois, mais je n'arrive pas à comprendre pourquoi ce qui suit ne fonctionnera pas du tout (les paramètres sont complètement ignorés, bien que la chaîne de queues soit lue si je teste dans l'événement PageLoad).QueryStringParameters ne fonctionne pas sur 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>
La valeur de startRowIndex transmis à la méthode est toujours 0 et les maximumRows est toujours -1 (même si la valeur par défaut devrait être 10). Pour m'assurer que la chaîne de requête était lue correctement, j'ai exécuté ce qui suit pour m'assurer que les valeurs sont bien là.
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
Et ils sont corrects - l'url à la recherche comme ceci:
http://localhost:49322/default?sri=5&rows=10
L'en-tête de la méthode:
<DataObjectMethod(DataObjectMethodType.Select, True)>
Public Shared Function GetProductsByPageSort(ByVal startRowIndex As Integer, ByVal maximumRows As Integer) As DataTable
J'ai déménagé à MVC (été un certain temps depuis que je suis J'ai dû éditer quelques vieilles webforms), donc je pense que j'ai juste oublié quelque chose d'autre pour faire fonctionner les SelectParameters. Des idées?