2012-04-13 28 views
6
var baseUri = new Uri("http://localhost/"); 
var uri1 = new Uri(baseUri, "1"); 
var uri2 = new Uri(uri1, "2"); 

Bất ngờ, uri2http://localhost/2. Làm thế nào tôi có thể gắn thêm vào uri1 để nó là http://localhost/1/2 intead? Có Uri thực hiện việc này hay tôi có cần dự phòng các chuỗi không? Ngẫu nhiên, tôi đã thử thêm hàng đầu/dấu gạch chéo gần như ở khắp mọi nơi.Gắn nhiều phân đoạn với System.Uri

Trả lời

11

"1" và "2" là "phần tên tệp" của url. Nếu bạn thực hiện "1" để trông giống như đường dẫn thư mục nó sẽ làm việc ok "1 /":

var baseUri = new Uri("http://localhost/"); 
var uri1 = new Uri(baseUri, "1/"); 
var uri2 = new Uri(uri1, "2"); 

Lưu ý: "phần tên tập tin" không phải là một thuật ngữ thực tế, như Url chỉ có "con đường" và " truy vấn "thành phần, nhưng thông thường đoạn cuối của một đường dẫn được coi là tên tệp:" /foo/bar/file.txt ".

Khi bạn kết hợp 2 đường dẫn, bạn muốn thay thế một phần đuôi của con đường đầu tiên bằng con đường thứ hai. Trong trường hợp của bạn, nó sẽ chỉ có phân đoạn "tên tệp" cho cả hai: "/ 1" và "2" (nếu bạn đặt giá trị thực như "/myFile.txt" và "NewFile.txt" trong việc kết hợp nó sẽ dễ dàng hơn để xem lý do tại sao nó hoạt động theo cách này).

+0

Ah, đó là một nơi tôi không phải cố gắng đặt dấu gạch chéo. – Daniel

+1

Xóa câu trả lời của tôi. Ngoài ra, điều này được xác minh ở đây http://compilify.net/bd –

+0

@Daniel, tôi cũng đã cập nhật câu trả lời để cho biết lý do tại sao nó hoạt động theo cách này ... –

Các vấn đề liên quan