クリックするボタンがあるasp.netページがあります。それをクリックすると、通常の URL の後に ?id=1 などのクエリ文字列が追加されます。サーバー側のC#コードからそれを行うにはどうすればよいですか?
4 に答える
3 つの方法... サーバー側のリダイレクト、LinkButton、およびクライアント側のボタンまたはリンク。
ボタンイベントハンドラーをクエリ文字列のある場所にリダイレクトすることができます...
Response.Redirect("myPage.aspx?id=" + myId.toString(), true);
ボタンを LinkButton としてレンダリングし、URL を設定できます...
LinkButton myLinkButton = new LinkButton("myPage.aspx?id=" + myId.toString(), true);
または、ボタンをクライアント側のリンクとしてレンダリングすることもできます。これは、Repeater コントロールを使用するときに私が行うことです...
<a href='myPage.aspx?id=<%# Eval("myID") %>'>Link</a>
特に大量のリンクが必要な場合は、最後の方法を好みます。
ところで、これは KISS のアプリケーションです。必要なのは通常の古いリンクだけです。クエリ文字列を含むリンクを作成するためにサーバー側のフープをジャンプする必要はありません。可能な限り通常のクライアント側 HTML を使用することが、ASP.Net をシンプルに保つ方法です。私は野生でそのテクニックを十分に見ません。
これは古い質問だと思いますが、フォームが送信されたときに Google アナリティクスが「カウント」できるように、新しい URL 文字列を作成したいときにまったく同じ問題がありました。
ASP:Button を使用してフォームを送信し、データベースに保存して、ポストバック時にお礼のメッセージを表示していました。そのため、送信前と送信後の URL は同じであり、何らかの方法で変更する必要がありました。
次のコードを使用しましたが、うまくいきました:
C#、Page_Load:
btnSubmit.PostBackUrl = "Page.aspx?id=" + id.ToString() + "&newquerystring=newvalue";
ここで、Page.aspx はポストバックしたいボタンのあるページ (同じページ) です。ID は、CMS からコンテンツを取得するために使用している動的 ID であり、明らかに新しいクエリ文字列アイテムです。
これが役立つことを願っています。
URL にクエリ文字列を追加するには、さまざまな方法があります。サーバー側で値を追加する場合は、次のコードを使用できます。
protected void Button_Click(object sender, EventArgs e)
{
Int32 id = 1;
// Or your logic to generate id
string url = String.Format("anypage.aspx?id={0}",id.ToString());
}
または、このコードを使用できます。
string url = Request.Url.GetLeftPart(UriPartial.Path);
url += (Request.QueryString.ToString() == "" ) ? "?pagenum=1" : "?" + Request.QueryString.ToString() + "&pagenum=1";