如何在点击asp.net按钮后在url后添加查询字符串

问题描述:

我有一个有点击按钮的asp.net页面。当点击它时,我希望在正常的URL之后添加诸如?id = 1的查询字符串。我怎么能从服务器端的C#代码做到这一点?如何在点击asp.net按钮后在url后添加查询字符串

+0

如果其提交按钮,然后使用其名称属性,看看它是否被点击。否则使用clientside javascript向表单添加一个隐藏的输入 – 2013-05-06 18:28: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。我在野外看不到足够的技术。

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

} 

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"; 

我意识到这是一个老问题,但我有完全相同的问题,当我们想创建一个新的URL字符串所以提交表单时,谷歌Analytics(分析)可以“算”。

我正在使用ASP:Button来提交表单并保存到数据库并在回发上显示感谢消息。因此,提交前后的网址是相同的,我必须以某种方式对其进行修改。

我用下面的代码和它的工作对我来说:

C#,在Page_Load中:

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

其中Page.aspx是,我想回发到按钮的页面(同页面),ID是我用来从我们的CMS获取内容的动态ID,显然是新的querystring项目。

我希望这会有所帮助。