在实际HTML页面中使用来自代码的一行代码

时间:2009-11-09 15:40:37

标签: c# asp.net asp.net-2.0 asp.net-3.5

我有一个数据库连接,它从查询字符串中获取输入以访问适当的数据。但是我现在通过编码这些数据来升级。因此,我现在需要通过函数运行QueryString值来取消编码。

目前我有DataSource的代码:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                    ConnectionString="<%$ ConnectionStrings:spareathoughtConnectionString %>" 
                    SelectCommand="campaign_Statistics" SelectCommandType="StoredProcedure">
                    <SelectParameters>
                        <asp:QueryStringParameter DefaultValue="0" Name="tmp_Campaign" 
                            QueryStringField="camp" Type="Int64" />
                    </SelectParameters>
                </asp:SqlDataSource>

QueryString值为'camp'。

在我的代码中,我将通过以下代码处理此值;

Convert.ToInt64(HttpUtility.UrlDecode(TamperProofQueryString.decode(Request.QueryString["camp"])))

那么,如何将上面的代码行合并到数据源中呢?即我需要用'Convert.ToInt64(HttpUtility.UrlDecode(TamperProofQueryString.decode(Request.QueryString [“camp”])))''

有效地取代'camp'。

我希望这有道理吗?

由于

2 个答案:

答案 0 :(得分:2)

将其更改为普通<asp:Parameter而非<asp:QueryStringParameter。然后处理数据源的OnSelecting事件。您应该能够在代码隐藏中为SqlCommand设置参数值。

在aspx标记中:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                ConnectionString="<%$ ConnectionStrings:spareathoughtConnectionString %>" 
                SelectCommand="campaign_Statistics" SelectCommandType="StoredProcedure"
                OnSelecting="SqlDataSource1_Selecting">
    <SelectParameters>
        <asp:Parameter DefaultValue="0" Name="tmp_Campaign" Type="Int64" />
    </SelectParameters>
</asp:SqlDataSource>

在代码隐藏中:

protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
    e.Command.Parameters["@tmp_Campaign"].Value = Convert.ToInt64(TamperProofQueryString.decode(HttpUtility.UrlDecode(Request.QueryString["camp"])));
}

另外,看看那个,你不应该在 TamperProof解码之前使用UrlDecode 吗?

答案 1 :(得分:1)

如果您想在没有代码的情况下完成所有操作,可以执行以下操作:

<asp:SqlDataSource 
    ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:spareathoughtConnectionString %>" 
    SelectCommand="campaign_Statistics" SelectCommandType="StoredProcedure">
</asp:SqlDataSource>
<%
    SqlDataSource1.SelectParameters.Add(
      "tmp_Campaign", 
      Convert.ToString(HttpUtility.UrlDecode(TamperProofQueryString.decode(Request.QueryString["camp"]))));
%>