2008-08-25 12 views

cevap

3

Sayfayı almak için HttpContext.Current kullanıyorum, daha sonra herhangi bir sayfa/web denetim yöntemini çalıştırın.

21

O System.Web.VirtualPathUtility.ToAbsolute burada çok faydalı olmasına rağmen, bu değil Control.ResolveUrl için mükemmel bir yedek olduğunu belirterek değer.

En az bir önemli fark vardır: Control.ResolveUrl Sorgu Dizelerini çok güzel bir şekilde işler, ancak VirtualPathUtility bir HttpException atar. Bu özellikle, Control.ResolveUrl'in çalıştığı şekilde kullanıldığında, ilk kez ortaya çıkmış olabilir. Kullanmak istediğiniz Sorgu dize tam yapısını biliyorsanız

, bu yani, geçici kadar kolaydır:

public static string GetUrl(int id) 
{ 
    string path = VirtualPathUtility.ToAbsolute("~/SomePage.aspx"); 
    return string.Format("{0}?id={1}", path, id); 
} 

... ama Sorgu dize bir den geçirilen oluyor eğer bilinmeyen bir kaynak, o zaman bir şekilde onu ayrıştırmak için ihtiyacın olacak. (Çok fazla derinleşmeden önce, System.Uri'nin sizin için yapabileceğini unutmayın).

+0

Bu daha doğru olmayabilir. .NET 4'te "VirtualPathUtility.ToAbsolute (" ~/bar/baz? Qux = 123 & quux = 456 ","/foo ") değerlerini değerlendirdiğimde/foo/bar/baz? Qux = 123 & quux = 456' –

İlgili konular