0

ページの読み込み後にクエリ文字列 ID を保存する方法はありますか? 私が探している理由は...私はページを行ったり来たりする必要があり、さらに重要なことに、ユーザーがIDを操作しようとしても、クエリ文字列からではなくIDを読み取るため、ページの結果に影響を与えるべきではありませんしかし、いくつかの保存小道具またはそのようなものから。

例として、ページが初めてロードされるとしましょう...私はこのURLを持っています:

http://www.somesite.com/Shop/Product/Detail.aspx?ProductId=100 

ユーザーがクエリスターリングを変更してページを再ロードしようとすると、page_loadは保存された小道具などからではなく、クエリ文字列から読み取る必要がありますか???

4

4 に答える 4

1

ページ読み込みイベントで、Page.IsPostBack プロパティを見てください。ページが最初に読み込まれたときは false です。次に、パラメーターを検証し、おそらくそれらをセッションまたはビューステートに保存する必要があります。

If Page.IsPostback = false Then
    'Validate Request("ProductID") here
    'Save in viewstate or session state
Else
    'Retrieve ProductID from viewstate or session state
End If

ユーザーがクエリ文字列を変更した場合は、新しいページの読み込みと見なす必要があります。

于 2012-04-17T02:38:07.457 に答える
0

これは、インターネットの非常に基本的な性質に反するため、機能しません。インターネットはステートレスです。

ユーザーがクエリ文字列を変更するたびに、それは新しい URL として扱われ、パラメーターを保存しても意味がありません。すべての URL 変更が最初のヒットになるため、Page.IsPostback も機能しません。

そうは言っても、あなたはまだそれを回避することができます、

  1. すべての URL で、一意の識別子 (GUID など) を渡すことができます。

  2. ページがヒットするとすぐに、パラメーターをセッションに保存して操作し、Guid を使用して 2 つの要求をマップできます。

しかし、問題はここに残ります。ユーザーがその Guid を変更すると、再び新しい要求として扱われます。一歩先に進み、その GUID の保存を開始して、システムで生成された GUID のみが処理されるようにすることができますが、全体としてシステムが複雑になるだけです。

私の推測では、問題に対して間違った解決策を見ている可能性があります。実際の目的を共有していただければ、より具体的なものをお勧めできるかもしれません。

于 2012-04-17T02:47:24.080 に答える
0

ユーザーがクエリ文字列の値を編集したり、別のページのコンテンツを表示したり、何かを実行したりするのを止めることはできません。あなたができることは、このユーザーがこのページにアクセスするのに十分な権限を持っていることをページの読み込みで確認することです。

Ex : www.mysite.com/editproduct.aspx?productid=4

ではeditproduct.aspx、ページにアクセスしている現在のユーザーが製品 4 にアクセスできるかどうかを確認する必要があります。アクセス権がある場合は編集フォームをユーザーに表示し、そうでない場合は非表示にして「このリソースにアクセスする権限がありません」というメッセージを表示します。

于 2012-04-17T02:47:32.333 に答える
0

道はない; ただし、セッションを使用して、Page_load が呼び出されたときに検証できます。

If ( Page.isPostBack = true ) {
    Session("SAVE") = false;
}

Request.Querystring ステートメントの前のしばらくの間、「保存」セッション状態を検証します。

于 2012-08-13T22:02:59.203 に答える