我有一个asp.net页面,有一个点击按钮。单击它时,我希望在正常URL之后添加一个查询字符串,例如?id = 1。我怎样才能从服务器端c#代码那里做到这一点?
答案 0 :(得分:10)
三种方式......服务器端重定向,LinkButton和客户端按钮或链接。
您可以将按钮事件处理程序重定向到具有查询字符串的位置...
Response.Redirect("myPage.aspx?id=" + myId.toString(), true);
您可以将按钮渲染为LinkButton并设置URL ...
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 :(得分:4)
我意识到这是一个老问题,但是当我们想要创建一个新的URL字符串时,我遇到了完全相同的问题,因此Google Analytics可以计算出#34;&#34;提交表单时。
我正在使用ASP:Button提交表单并保存到数据库并在回发时显示感谢信息。因此,提交前后的URL是相同的,我必须以某种方式对其进行修改。
我使用了以下代码,它对我有用:
C#,在Page_Load中:
btnSubmit.PostBackUrl = "Page.aspx?id=" + id.ToString() + "&newquerystring=newvalue";
其中Page.aspx是包含我想要回发的按钮的页面(同一页面),ID是我用来从CMS中获取内容的动态ID,显然是新的查询字符串项。
我希望这会有所帮助。
答案 2 :(得分: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());
}
答案 3 :(得分: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";