2009-11-09 44 views
0

我有一个数据库连接,它从查询字符串的输入访问适当的数据。不过,我现在通过编码这些数据来升级东西。因此,我现在需要通过函数运行QueryString值来对其进行解码。从代码隐藏在实际的HTML页面中使用一行代码

目前我对数据源的代码:

<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> 

查询字符串值是“营地”。

在我的代码后面我会通过下面的代码处理这个值;

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

那么,如何才能将上面的代码行纳入数据源?即我需要'Convert.ToInt64(HttpUtility.UrlDecode(TamperProofQueryString.decode(Request.QueryString [“camp”]))''''有效地取代'阵营')'

我希望这是有道理的?

感谢

回答

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"]))); 
} 

此外,望着那,你不应该的防伪解码之前UrlDecode

+0

我不跟着你的解释很抱歉。 – Munklefish

+0

谢谢你。 Witrh问候UrlEncode /解码我目前做如下,它工作得很好,虽然它会出现你在技术上是正确的。请评论: 要编码: HttpUtility.UrlEncode(TamperProofQueryString.encode(“wibble”));要解码: HttpUtility.UrlDecode – Munklefish

+0

我现在改为: TamperProofQueryString.decode(HttpUtility.UrlDecode( )似乎仍然功能相同,但现在应该在技术上正确的顺序 – Munklefish

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"])))); 
%> 
+0

这似乎并没有工作。 – Munklefish