假设我们有一个通过页面 URL 传入的值。示例:www.test.com/page.aspx?&Key=Val。 Val 可通过 Request.Querystring("Key") 检索。
是否存在将 QueryString 值分配给 ASPX 页面上定义的 SqlDataSource 参数的公认最佳实践?
我知道的选项:
这两个都使用 DefaultValue,一个显然不打算以这种方式使用的属性。 ASP.NET 霸主有没有推荐的方法来实现这个常见任务?
代码块 1
<SelectParameters>
<asp:Parameter Name="StoreID" Type="String" DefaultValue="-1" />
</SelectParameters>
代码块 2:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
SD1.SelectParameters("StoreID").DefaultValue = Request.QueryString("StoreID")
End Sub
最佳答案
这最好直接使用 DataSource 事件处理,而不是 PageLoad 事件。
要在 Select 中设置 QueryString,请将其添加到您的数据源中:
<SelectParameters>
<asp:QueryStringParameter Name="StoreID" QueryStringField="StoreID" Type="Int64" />
</SelectParameters>
这会告诉 DataSource Select 在 QueryString 中查找“?StoreID=x”,并将 StoreID 设置为您提到的 URL 中的“x”。
要为 StoreID 设置默认值,请像这样连接到数据源选择事件:
Protected Sub SD1DataSource_Selecting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceSelectingEventArgs) Handles SD1DataSource.Selecting
If e.Command.Parameters("@StoreID").Value Is Nothing Then
e.Command.Parameters("@StoreID").Value = 155
End If
End Sub
编辑:修改为使用您的变量名称。
关于c# - ASP.NET - 从 QueryString 值 @ Page Load 设置 SqlDataSource 参数值的最佳实践?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2301246/