4

我有一个 asp.net 页面,有一个按钮可以点击。单击它时,我希望在普通 url 之后添加一个查询字符串,例如 ?id=1 。我怎样才能从服务器端 C# 代码做到这一点?

4

4 回答 4

10

三种方式...服务器端重定向、LinkBut​​ton 和客户端按钮或链接。

您可以让您的按钮事件处理程序重定向到带有查询字符串的位置...

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

您可以将按钮呈现为 LinkBut​​ton 并设置 URL...

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

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

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

我更喜欢最后一种方法,特别是当我需要一大堆链接时。

顺便说一句,这是 KISS 的应用程序 - 您只需要一个常规的旧链接,您不需要跳过服务器端的箍来创建一个包含查询字符串的链接。尽可能使用常规客户端 HTML 是保持 ASP.Net 简单的方法。我在野外看到的这种技术还不够多。

于 2013-05-06T18:35:37.387 回答
4

我意识到这是一个老问题,但是当我们想创建一个新的 URL 字符串以便 Google Analytics 可以在提交表单时“计数”时,我遇到了完全相同的问题。

我使用 ASP:Button 提交表单并保存到数据库并在回发时显示感谢消息。因此,提交前和提交后的 URL 是相同的,我不得不以某种方式对其进行修改。

我使用了以下代码,它对我有用:

C#,在 Page_Load 中:

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

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

我希望这有帮助。

于 2015-11-03T19:34:30.520 回答
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());

}
于 2013-05-06T18:36:32.893 回答
1

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

或者您可以使用此代码。

string url = Request.Url.GetLeftPart(UriPartial.Path);
url += (Request.QueryString.ToString() == "" ) ? "?pagenum=1" : "?" + Request.QueryString.ToString() + "&pagenum=1";
于 2013-05-06T18:38:47.060 回答