2012-06-13 112 views
2

我有一個簡單的任務,沒有一個簡單的解決方案。 我有需要改變或重寫c#重寫URL參數

例如www.contoso.com/countries.aspx?country=UK

所有我需要的是重寫參數而不檢查URL瀏覽器中的參數所以它可能顯示爲:

www.contoso.com/countries.aspx?country=France

我已經試過類似的東西,但沒有快樂

string parameter2 = Request.QueryString["country"]; 
Context.RewritePath(parameter2.Replace("?country=", "France")); 
+1

什麼時候你想要做到這一點? – walther

+1

在發生類似按鈕或超鏈接的事件後,代碼應更改該參數而不更改其他任何信息 – user1211929

回答

1

你可以做這樣的事情:

var url = "www.contoso.com/countries.aspx?country={0}";

var country = "UK";

url = String.Format(url, country);

或者你可以這樣做:

var url = Request.Url.AbsolutePath;

var country = Request.QueryString["country"];

url = url.Replace(country, "UK");

然後:

Response.Redirect(url);

+1

謝謝,網址已經出現www.contoso.com/countries.aspx?country=UK,我需要重新發布參數。 – user1211929

+0

ahhh所以這隻會工作,如果你事先知道URL,我猜你不知道它提前 –

+0

它爲你工作了嗎? –

0

你不能將整個URL讀入一個字符串,將它分成'?'然後將你的新位添加到字符串的第一部分?

事情是這樣的:

var url = Request.QueryString; 
    var newUrl = url.split('?'); 
    url = newUrl[0] + "?country=France"; 

我不知道這是否會工作,它僅僅是一個想法

+0

不必要。爲什麼要這樣做?他有重寫的問題,得到一個參數不應該是一個問題... – walther

0

如果您想更換整個查詢字符串,使用

newVal = string.LastIndexOf("?"); 

然後

URL.Replace(oldVal, newVal); 

,或者如果你只有一個參數的查詢字符串和要替換它的唯一價值,使用

newVal = string.LastIndexOf("="); 
URL.Replace(oldVal, newVal); 
0

看看this解決您的問題的詳細迴應。