可能性の重複:?表示asp.netのクエリ文字列を非表示にする方法
Removing a querystring from url in asp.net方法のdefault.aspxなどのアドレスバーに表示asp.netのクエリ文字列を非表示にするには、ID = 2&名前=サンジャイ
アドレスバーのdefault.aspx?id = 2 &名前= sanjay
可能性の重複:?表示asp.netのクエリ文字列を非表示にする方法
Removing a querystring from url in asp.net方法のdefault.aspxなどのアドレスバーに表示asp.netのクエリ文字列を非表示にするには、ID = 2&名前=サンジャイ
アドレスバーのdefault.aspx?id = 2 &名前= sanjay
クエリ文字列でパラメータに渡されたデータを非表示にする場合は、
フォームを使用して情報をPOSTします。これは、ソースページに追加のコードを必要とするかもしれませんが、ターゲットページでロジック変更を必要としません(Request.QueryStringをRequest.Formに変更するだけです)。 POSTは不可能ではありませんが、QueryStringパラメータを使用するよりも魅力的です。
セッション変数を使用して、ページ間で情報を伝達します。これは、セッション変数のチェックを考慮する必要があるため(例えば、ユーザーが状態を常にチェックしている場合、BackボタンとForwardボタンを使用してナビゲートするのが難しくなるなど)、(1) 。セッションクッキーが有効になっていない場合も対処する必要があります(このソリューションはこれらの人々にとってはうまくいきません)。
実際のデータの代わりにQueryStringに「エンコードされた」または非センシティブな情報を使用します。これには、すべてのページ提出のいずれかの終わりにエンコードおよびデコードスキームを作成する努力が必要です。もちろん、ユーザーはあなたのスキームを実験しリバースエンジニアリングすることができますが、既存のQueryStringに意味のある変更がすぐに発生する可能性は低くなります。
フレームセットを使用します。私はこのアプローチをお勧めしませんが、それはかなり一般的です。情報の変更をより困難にするのではなく、情報を隠そうとしている場合でも、ユーザーは個々のフレームを右クリックしてプロパティをクリックして、QueryStringで渡されたすべての情報を取得できます。
使用Server.Transferを本当に
(のURLのみを簡単に見えた)、まだ最初のページに渡されたのQueryStringパラメータにアクセスする必要がありますされ、2番目のページにあなたのコントロールを移動します可能であれば、データを直接default.aspxにPOSTする必要があります。呼び出し元が別のページである場合、特にサイトマップの機能に頼っている場合は、ウェブフォームでちょっとしたことが起こります。いずれの場合でも、 "クロスページの投稿"を使用してデータを投稿することも、 "server.transfer"を使用することもできます。リダイレクトでセッション状態を使用すると、非効率的(クライアントの余分な往復)ですが、しばしば便利です。
Webフォーム(呼び出し元):
コードビハインド(呼び出し元):
protected void LinkButton1_Click(object sender, EventArgs e)
{
Session["id"] = 2; // pull the data from the control or use OnCommand?
Session["name"] = "Sanjay";
Response.Redirect("~/Default.aspx");
}
と受信ページしたがって、たとえば、呼び出しページは次のようになります。 、 デフォルト。
Webフォーム::
Name: <%=_name %>
<br />
Id: <%= _id %>
コードビハインド:
protected int? _id
{
get { return Session["id"] as int?; }
set { Session["id"] = value; }
}
protected string _name
{
get { return Session["name"] as string; }
set { Session["name"] = value; }
}
幸運のaspxは次のようになります!
なぜ隠したいですか? – JPReddy