2009-12-09 51 views

Trả lời

63

Giải quyếtUrl tạo URL tương ứng với thư mục gốc.

Giải quyếtClientUrl tạo URL tương ứng với trang hiện tại.

Bạn cũng có thể sử dụng cái nào bạn muốn, tuy nhiên ResolveUrl thường được sử dụng hơn.

13

Theo tài liệu MSDN:

ResolveClientUrl

Một URL đủ tiêu chuẩn để các quy định tài nguyên phù hợp để sử dụng trên trình duyệt .

Sử dụng phương pháp ResolveClientUrl để trở lại một chuỗi URL thích hợp cho sử dụng bởi khách hàng để truy cập tài nguyên trên máy chủ Web, chẳng hạn như tập tin hình ảnh, liên kết đến các trang bổ sung, và vân vân.

ResolveUrl

URL được chuyển đổi.

Nếu tham số relativeUrl chứa URL tuyệt đối, URL được trả về không thay đổi. Nếu tham số relativeUrl chứa URL tương đối, URL đó được thay đổi thành URL tương đối chính xác cho đường dẫn yêu cầu hiện tại, để trình duyệt có thể giải quyết URL.

Ví dụ, hãy xem xét những điều sau kịch bản:

Một khách hàng đã yêu cầu một trang ASP.NET có chứa một điều khiển người dùng có hình ảnh đi kèm với nó.

Trang ASP.NET nằm ở /Store/page1.aspx.

Điều khiển người dùng được đặt tại /Store/UserControls/UC1.ascx.

Tệp hình ảnh được đặt tại /UserControls/Images/Image1.jpg.

Nếu điều khiển người dùng vượt qua đường dẫn tương đối đến hình ảnh (có nghĩa là, /Store/UserControls/Images/Image1.jpg) với phương pháp ResolveUrl, phương pháp sẽ trả về giá trị /Images/Image1 .jpg.

Tôi nghĩ điều này giải thích khá rõ.

+37

Nếu MSDN giải thích sự khác biệt tốt, tôi sẽ không ở đây. –

+1

Tôi nghĩ rằng tài liệu MSDN là khủng khiếp và đó là lý do tại sao tôi ở đây! hầu hết mọi người sẽ hiểu "url đủ điều kiện" có nghĩa là URL tuyệt đối – Andy

31

Dưới đây là một ví dụ đơn giản:

//Returns: ../HomePage.aspx 
String ClientURL = ResolveClientUrl("~/HomePage.aspx"); 

//Returns: /HomePage.aspx 
String RegURL = ResolveUrl("~/HomePage.aspx"); 

//Returns: C:\inetpub\wwwroot\MyProject\HomePage.aspx 
String ServerMappedPath = Server.MapPath("~/HomePage.aspx"); 

//Returns: ~/HomePage.aspx 
String appRelVirtPath = AppRelativeVirtualPath; 

//Returns: http://localhost:4913/ 
String baseUrl = Request.Url.GetLeftPart(UriPartial.Authority) + Request.ApplicationPath; 

//Returns: "http://localhost:4913/HomePage.aspx" 
String absUri = Request.Url.AbsoluteUri; 
+0

Bạn có thể thêm một số giải thích văn bản về ví dụ của mình không? –

2

Nói tóm lại:

Page.ResolveUrl(~): creates the URL from the root of app. 

Page.ResolveClientUrl(~): creates the URL relative to the current page.(e.g: ../../..) 

nhưng trong các thử nghiệm của tôi trong asp.net, Page.ResolveUrl là tốt hơn vì đầu ra ổn định & không tương đối.

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