假设我们有一个通过页面 URL 传入的值。示例:www.test.com/page.aspx?&Key=Val。 Val 可通过 Request.Querystring("Key") 检索。

是否存在将 QueryString 值分配给 ASPX 页面上定义的 SqlDataSource 参数的公认最佳实践?

我知道的选项:

  • 不要在 ASPX 文件中包含参数。直接通过代码隐藏添加它们——并在添加时分配 Param.DefaultValue。
  • 在页面加载中设置 Param.DefaultValue (Codeblock 2)

  • 这两个都使用 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/

    10-13 07:17