2014-02-18 34 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; 
相關問題