当ASP.NET按钮被点击时如何在URL后添加查询字符串

4

我有一个包含按钮的asp.net页面。当点击该按钮时,我希望在正常URL后面添加类似于?id=1的查询字符串。如何从服务器端的c#代码实现这一功能?


如果它是一个提交按钮,则使用其名称属性来查看是否已单击。否则,使用客户端JavaScript向表单添加隐藏输入。 - nathan hayfield
4个回答

10

有三种方法可以实现页面重定向:服务端重定向、LinkButton以及客户端按钮或链接。

您可以在按钮事件处理程序中将重定向到具有查询字符串的位置。

 Response.Redirect("myPage.aspx?id=" + myId.toString(), true);
你可以将按钮呈现为LinkButton,并设置URL...
 LinkButton myLinkButton = new LinkButton("myPage.aspx?id=" + myId.toString(), true);

或者,您可以将按钮呈现为客户端链接-当我使用重复器控件时,这就是我所做的...

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

我更倾向于最后一种方法,尤其是当我需要一大堆链接时。

顺便说一下,这是KISS原则的应用——你只需要一个普通的链接,不需要经过服务器端麻烦地创建一个带有查询字符串的链接。在可能的情况下尽可能使用普通客户端HTML是保持ASP.Net简单的方法。我在实际应用中没有看到足够多的这种技术。


4
我知道这是一个老问题,但是当我们想要创建一个新的URL字符串,以便Google Analytics可以“计数”表单提交时,我遇到了完全相同的问题。
我正在使用ASP:Button提交表单,并保存到数据库并在postback时显示感谢消息。 因此,在提交前后的URL相同,我必须以某种方式进行修改。
我使用了以下代码,它对我起作用:
C#,在Page_Load中:
btnSubmit.PostBackUrl = "Page.aspx?id=" + id.ToString() + "&newquerystring=newvalue";

其中Page.aspx是我想要进行回发的页面(同一页面),ID是我用来从我们的CMS中获取内容的动态ID,显然还有新的查询字符串项。

希望这能帮到您。


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

如何在C#中构建URL的查询字符串?

或者您可以使用以下代码。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接