1

クライアントはクエリ文字列を介して値を渡したいと考えていますが、クエリ文字列がブラウザのアドレス バーに表示されることを望んでいません。渡される値は追跡用です。href リンクをクリックした後、ポストバックが発生しないことはわかっています。

ブラウザーのアドレス バーに表示せずに、クエリ文字列から値を取得する方法はありますか? これは不可能かもしれませんが、間違っているかもしれません。誰か答えがあるかどうか見てみたいと思います。

4

3 に答える 3

0

いいえ、クエリ文字列に含まれている場合は、アドレスバーを介してエンドユーザーに表示されます。これは、HTTPGETリクエストの標準的な動作です。

WebFormsを使用している場合は、LinkButtonコントロールを調べてください。これにより、POST操作である実際のポストバックが実行されます。OnClick.NETコードビハインドでLinkBut​​tonのイベントに応答するので、準備はほぼ整っています。

于 2010-01-28T21:53:18.340 に答える
0

クエリ文字列以外の場所に文字列を格納する必要があるようです。このために状態管理を使用するのはどうですか。たとえば、この値をセッションに保存すると、ユーザーがリンクをクリックした後に開く新しいページでこの値を利用できるようになります。

クエリ文字列に追加します

" http://yoursite.com/yourpage?id=123 "

代わりにセッションに保存します。

LinkBut​​tonやボタンなどのサーバーコントロールを使用して、ユーザーを新しいページにリダイレクトしてから、文字列値をセッションに保存します。

protected void LinkButton_Click(object sender, EventArgs e)
    {
        Session["Id"] = 123;
        Response.Redirect("yourpage.aspx", false);
    }

セッションから文字列値を取得するには、次を使用します。

Session["id"].ToString();

状態管理の詳細と他のオプションについては、こちらをご覧ください

別の解決策

クエリ文字列の値をURLに追加する前に暗号化してから、復号化します。このルートを使用する場合は、値の暗号化/復号化の詳細について、この記事を参照してください。

http://www.codeproject.com/KB/security/DotNetCrypto.aspx

于 2010-01-28T22:35:21.827 に答える
0

何を追跡しようとしているかによって異なります。ユーザーがサイトを移動するときにその場で追跡しようとしている場合は、小さなトークンをセッションに入れる方がよいでしょう -リカルドが彼の回答で述べているように.

特定のリンクがサイトでどのように機能しているか、またはユーザーがどのリンクをたどっているかを追跡したい場合は、JavaScript を使用する必要があります。

基本的に、このクリックが発生したという事実を追跡/記録するために、サーバー上のサービス (ま​​たは同様のもの) を呼び出すタグでonclickイベントを作成する必要があります。<a>

このメソッドが を返す場合true、制御はブラウザーに戻り、元の href が要求されます。

この例では jQuery の使用を前提としていますが、他のライブラリでも同様のことを実行できます。すべてのネイティブ ASP.NET ツールを使用できます。次のコードを手元に用意しました。

<a href="/someUrl.aspx" onClick="javascript:TrackThis(this);return true;">text</a>

<script type="text/javascript">
  function TrackThis(link){
     $.ajax({
        url: "/WebServices/ClickTracker.asmx/Track",
        type: "POST",
        dataType: "json",
        data: "{\"url\":\"" + link + "\", \"page\":\"" + window.location + "\"}"
        contentType: "application/json; charset=utf-8"
    });
  }

次に、渡される値 (この場合、ユーザーがクリックしたリンクの値と、その時点で表示されていたページの URL) を受け取り、その処理を実行し、保持する単純な Web サービスを作成できます。邪魔にならないように。

Google は検索結果でこれと非常によく似た処理を行います。ブラウザのステータス バーに表示される URL は、インデックスに登録されたサイトの URL ですが、途中で Google のサーバーの追跡ページにアクセスして、クリックしたことを伝えます。イベントを使用しonclickます。

于 2010-01-28T23:58:24.163 に答える