2013-05-06 17 views
4

我有一個有點擊按鈕的asp.net頁面。當點擊它時,我希望在正常的URL之後添加諸如?id = 1的查詢字符串。我怎麼能從服務器端的C#代碼做到這一點?如何在點擊asp.net按鈕後在url後添加查詢字符串

+0

如果其提交按鈕,然後使用其名稱屬性,看看它是否被點擊。否則使用clientside javascript向表單添加一個隱藏的輸入 – 2013-05-06 18:28:10

回答

10

三種方式...服務器端重定向,LinkBut​​ton和客戶端按鈕或鏈接。

你可以有你的按鈕事件處理函數重定向到一個查詢字符串的位置...

Response.Redirect("myPage.aspx?id=" + myId.toString(), true); 

您可以顯示該按鈕爲一個LinkBut​​ton,並設置網址...

LinkButton myLinkButton = new LinkButton("myPage.aspx?id=" + myId.toString(), true); 

或者,您可以將該按鈕渲染爲客戶端鏈接 - 這是我使用Repeater控件時所做的...

<a href='myPage.aspx?id=<%# Eval("myID") %>'>Link</a> 

我更喜歡最後一種方法,特別是當我需要一大堆鏈接時。

順便說一句,這是KISS的應用 - 你需要的只是一個普通的舊鏈接,你不需要跳過服務器端的箍來創建一個鏈接與查詢字符串。儘可能使用常規的客戶端HTML如何簡化ASP.Net。我在野外看不到足夠的技術。

1

有多種方法可以在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()); 

} 
1

How to build a query string for a URL in C#?

或者您可以使用此代碼。

string url = Request.Url.GetLeftPart(UriPartial.Path); 
url += (Request.QueryString.ToString() == "") ? "?pagenum=1" : "?" + Request.QueryString.ToString() + "&pagenum=1"; 
4

我意識到這是一個老問題,但我有完全相同的問題,當我們想創建一個新的URL字符串所以提交表單時,谷歌Analytics(分析)可以「算」。

我正在使用ASP:Button來提交表單並保存到數據庫並在回發上顯示感謝消息。因此,提交前後的網址是相同的,我必須以某種方式對其進行修改。

我用下面的代碼和它的工作對我來說:

C#,在Page_Load中:

btnSubmit.PostBackUrl = "Page.aspx?id=" + id.ToString() + "&newquerystring=newvalue"; 

其中Page.aspx是,我想回發到按鈕的頁面(同頁面),ID是我用來從我們的CMS獲取內容的動態ID,顯然是新的querystring項目。

我希望這會有所幫助。

相關問題