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、IE7以降で機能する必要があります。 。)

ありがとうございました

4

1 に答える 1

1

window.location を設定する代わりに、PostBack をトリガーできます: __doPostBack("<%= YourButtonID.ClientID %>", "");... そうすれば、クライアントで何も暗号化する必要がありません。

于 2012-10-10T10:10:50.030 に答える