2014-02-18 33 views
2

我有2个链接如何一个参数添加到当前的URL在C#

<li class="active"> 
    <a href="<%#CurrentSearchUrl%>"><span>Current search Page 
</span></a> 

    <li><a href="<%#CurrentSearchUrlParam%>"><span>Add param </span> 
     </a> 
在Page_Load

CurrentSearchUrl = Request.Url.AbsoluteUri; 
    CurrentSearchUrlParam = Request.Url+"&discount=1"; 

参数是添加,但网址是不正确的 我目前的网址是

http://localhost:1067/search/default.aspx?q=test 

我想添加一个参数,所需的结果应该是

http://localhost:1067/search/default.aspx?q=test&discount=1 

在此先感谢

+0

您正在寻找[查询字符串](http://stackoverflow.com/questions/19987952/how-to-properly-use-a-querystring- in-net-asp-c) – Wahtever

+1

CurrentSearchUrlParam和CurrentSearchUrlDiscount是不同的。你在页面上使用了正确的参数吗? –

回答

1

有很多办法做到这一点。例如:

你的HTML:

<li class="active"> 
    <a href="" runat="server" ID="Link1"><span>Current search Page 
</span></a> 

    <li><a href="" runat="server" ID="Link2"><span>Add param </span> 
     </a> 

在Page_Load:

Link1.HRef = HttpContext.Current.Request.Url.ToString(); 
Link2.HRef = HttpContext.Current.Request.Url.ToString()+"&discount=1"; 
+0

我做了什么给了我相同的结果作为你的建议 – Alex

+0

如果URL中有其他参数会怎么样? –

9
 var uriBuilder = new UriBuilder(Request.Url.AbsoluteUri); 
     var paramValues = HttpUtility.ParseQueryString(uriBuilder.Query); 
     paramValues.Add("param1", "value1"); 
     paramValues.Add("param2", "value2"); 
     uriBuilder.Query = paramValues.ToString(); 

     Link1.HRef=uriBuilder.Uri; 
+0

我认为这实际上是正确答案,因为它处理了原始URL没有查询字符串参数的情况。 –

2

小心现有参数。 下面是维克多代码稍作修改:

var uriBuilder = new UriBuilder(Request.Url.AbsoluteUri); 
    var paramValues = HttpUtility.ParseQueryString(uriBuilder.Query); 

    if(paramValues.Get("param1")!=null) paramValues.Remove("param1"); 

    paramValues.Add("param1", "value1"); 
    paramValues.Add("param2", "value2"); 
    uriBuilder.Query = paramValues.ToString(); 

    Link1.HRef=uriBuilder.Uri; 
相关问题