2012-01-23 31 views
0
私がURLのためのウェブサイトとすべてが自分のhrefの値は、単にクエリ文字列などに設定されているアンカータグをこするよ

..Uri.TryCreateは、私は

<a href="?AppId=12345&CatId=13">Details</a> 

現在のURLを期待された結果を生成しません。ページはこのような何か...

http://www.theurl.com/ThePage.aspx?PageNo=2 

あるので私が探しているURLは、GEへ

http://www.theurl.com/ThePage.aspx?AppId=12345&CatId=13 

になりますTこの私は、メソッドUri.TryCreateを使用していますので、私は、次のパラメータを渡しています(最初の2つのパラメータは、タイプのウリではなく、文字列です)。..

Uri.TryCreate("http://www.theurl.com/ThePage.aspx?PageNo=2", "?AppId=12345&CatId=13", out uri); 

しかしoutパラメータ「URI」設定されます。..

http://www.theurl.com/?AppId=12345&CatId=13 

あなたはそれが.aspxのパスを削除見ることができるように。あなたはこれを行うためのよりよい方法を勧めたり、なぜそれが私がそれがすべきと思ったようにうまくいかないのかを説明したりできますか?

答えて

1

これを試してください:

Uri.TryCreate("http://www.theurl.com/ThePage.aspx?PageNo=2", "ThePage.aspx?AppId=12345&CatId=13", out uri); 

the docsによれば、最初のものは、ベースURIであり、第二は、相対URIです。

0

Hmm。私は起こっている動作が正しいことを確信していません。それはバグかもしれません。

いずれにせよ、あなたは以下の手軽見つけるかもしれない:

UriBuilder uBuild = new UriBuilder("http://www.theurl.com/path/thePage.aspx?PageNo=2"); 
uBuild.Query = "AppId=12345&CatId=13"; 
Uri newUri = ub.Uri;//http://www.theurl.com/path/thePage.aspx?AppId=12345&CatId=13 
//Note that we can reuse uBuild as we continue to parse the page, as long as we're only dealing with cases where only the query changes. 
uBuild.Query = "AppId=678&CatId=2"; 
Uri anotherUri = ub.Uri;//http://www.theurl.com/path/thePage.aspx?AppId=678&CatId=2