如何更新 C# Uri 段?

Rod*_*ney 3 c# url .net-core

我有一个 Uri,其 URL 格式如下:/Review/{产品名称}/{id}

我想更新细分产品名称,例如:

uri.Segments[2] = product.UrlFriendlyProductName; 
Run Code Online (Sandbox Code Playgroud)

当我执行上面的代码时,Uri 不会更新。有什么建议么?

Evk*_*Evk 5

Uri从某种意义上说,类是不可变的,您无法通过公共接口修改它。Segments基本上只是Path用“/”分割并返回。要进行编辑,Uri您可以使用UriBuilder类(它仍然不会修改原始内容,但会创建修改后的副本)。但它不包含方便的Segments属性,所以你必须自己分裂。例如:

var url = new Uri("http://something/Review/name/1");
var builder = new UriBuilder(url);
// extract segments from path
var segments = builder.Path.Split('/');
// modify
segments[2] = "bla";
// combine back
builder.Path = String.Join('/', segments);
// modified uri
var result = builder.Uri;
Run Code Online (Sandbox Code Playgroud)