C# 仅修改超链接的路径部分';在C中导航#
我想修改C# 仅修改超链接的路径部分';在C中导航#,c#,.net-3.5,C#,.net 3.5,我想修改Hyperlink控件的NavigateUrl属性。我需要保留查询字符串,但更改超链接URL的路径 大致如下: var control = (Hyperlink) somecontrol; // e.g., control.NavigateUrl == "http://www.example.com/path/to/file?query=xyz" var uri = new Uri(control.NavigateUrl); uri.AbsolutePath = "/new/abso
Hyperlink
控件的NavigateUrl
属性。我需要保留查询字符串,但更改超链接URL的路径
大致如下:
var control = (Hyperlink) somecontrol;
// e.g., control.NavigateUrl == "http://www.example.com/path/to/file?query=xyz"
var uri = new Uri(control.NavigateUrl);
uri.AbsolutePath = "/new/absolute/path";
control.NavigateUrl = uri.ToString();
// control.NavigateUrl == "http://www.example.com/new/absolute/path?query=xyz"
var-control=(超链接)somecontrol;
//例如,control.NavigateUrl==”http://www.example.com/path/to/file?query=xyz"
var uri=新uri(control.NavigateUrl);
uri.AbsolutePath=“/new/absolute/path”;
control.NavigateUrl=uri.ToString();
//control.NavigateUrl==”http://www.example.com/new/absolute/path?query=xyz"
但是,Uri.AbsolutePath
是只读的(),所以这个解决方案不起作用
在保留查询字符串、主机名和架构部分不变的情况下,如何仅更改
超链接的NavigateUrl
属性的路径?您可以在第一个问号处拆分字符串,然后将新域与之连接起来。您可能会发现该类很有用:
var oldUrl = "http://www.example.com/path/to/file?query=xyz";
var uriBuilder = new UriBuilder(oldUrl);
uriBuilder.Path = "new/absolute/path";
var newUrl = uriBuilder.ToString();
或者让它更通用一些:
public string ChangePath(string url, string newPath)
{
var uriBuilder = new UriBuilder(url);
uriBuilder.Path = newPath;
return uriBuilder.ToString();
}
然后:
var control = (Hyperlink) somecontrol;
control.NavigateUrl = ChangePath(control.NavigateUrl, "new/absolute/path");
顺便说一句,我正在调查这一问题,作为中所述问题的可能解决方法。谢谢,成功了!但我最终不得不使用uriBuilder.Uri.PathAndQuery而不是uriBuilder.ToString()。有关更多信息,请参阅。