在重定向到结果页面之前加密搜索框文本客户端

时间:2012-10-08 17:27:50

标签: javascript jquery asp.net webforms

我正在处理正在进行UI更改的现有应用程序,而我正在尝试将搜索框功能移至客户端。就像目前一样,搜索框有一个搜索按钮,OnClick触发服务器端方法,该方法查看搜索框中的文本,将其设置为搜索结果URL的查询字符串并重定向到该URL。由于搜索框中的数据是敏感的,因此在重定向之前,查询字符串值在服务器端加密。

现有代码如下:

<asp:TextBox ID="txtSecretSearch" runat="server" Placeholder="Secret Search"/>
<asp:Button ID="btnSearch" Text="Search" OnClick="btnSearch_Click" runat="server" />

protected void btnSearch_Click(object sender, EventArgs e)
  {
    if(txtSecretSearch.Text.ToLower() != "secret search" && !string.IsNullOrEmpty(txtSecretSearch.Text))
        Response.Redirect("~/SecretSearchResults.aspx?secret=" + Encryption.EncryptForQueryString(txtSecretSearch.Text));
    else
        Response.Redirect("~/SecretSearchResults.aspx");
}

现在,新的UI设计消除了搜索按钮。我可以将其移动到客户端并实现相同的功能吗? 我正在考虑使用jquery来监听回车键,然后使用类似的东西重定向:

$("#txtSecretSearch").keyup(function(event){
    if(event.keyCode == 13){
        window.location = "~/SecretSearchResults.aspx?secret=" + SomeWayToEncrypt($("txtSecretSearch").val());
    }
});

这样做有意义吗?如果是这样,加密客户端的好方法是什么。如果没有,当按下Enter键时如何触发服务器端方法。 (注意:我确实尝试使用asp:Panel并使用默认按钮并在将其显示为false后将其设置为现有按钮。这仅适用于firefox,我需要它在chrome,ff和IE 7及更高版本中工作。)

谢谢

1 个答案:

答案 0 :(得分:1)

您可以触发PostBack而不是设置window.location:__doPostBack("<%= YourButtonID.ClientID %>", ""); ...这样您就不必加密客户端上的任何内容。