我有一个 asp.net 页面,有一个按钮可以点击。单击它时,我希望在普通 url 之后添加一个查询字符串,例如 ?id=1 。我怎样才能从服务器端 C# 代码做到这一点?
4 回答
三种方式...服务器端重定向、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 简单的方法。我在野外看到的这种技术还不够多。
我意识到这是一个老问题,但是当我们想创建一个新的 URL 字符串以便 Google Analytics 可以在提交表单时“计数”时,我遇到了完全相同的问题。
我使用 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";