0

我正在处理一个正在经历 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 来监听 enter 键,然后使用类似的东西重定向:

$("#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 及更高版本中工作.)

谢谢

4

1 回答 1

1

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

于 2012-10-10T10:10:50.030 回答