我正在处理一个正在经历 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 及更高版本中工作.)
谢谢