2010-02-10 10 views
18

içeride Aşağıdaki kod var:ASP.Net C# ResolveClientUrl Sınıf

public class NavigationPath 
{ 
    private string menuItems = "<li>" + 
            "<a href=\"#\">home</a>" + 
           "</li>"; 

Ama istiyoruz sahip olmak:

public class NavigationPath 
{ 
    private string menuItems = "<li>" + 
            "<a href=\"" + ResolveClientUrl("~/home.aspx") + "\">re</a>" + 
           "</li>"; 

Ancak, A Sınıfı içindeki ResolveClientUrl kullanabilmek için değilim. Herhangi bir fikir?

cevap

7

ResolveClientUrl dolayısıyla o kadar doğrudan erişilebilir, System.Web.uı.Control sınıfı üyesidir: En asp.net sayfasının kodu içinde adlandırılan

var url = ResolveClientUrl("~/Some/Url/"); 

.

Bir sınıfın içinde kullanmak için, Sayfa'yı (veya sayfadaki bir denetimi) yapıcısındaki sınıfa geçirmek zorunda kalacaksınız. Öyleyse bile, belirttiğiniz şekilde kullanabileceğinden emin değilim. Muhtemelen benzer bir şey yapmak olurdu:

var navPath = new NavigationPage(this); 
+0

thx cevabın için. – Marco

49
yerine Sayfa nesne üzerinde ResolveClientUrl çağıran

(ya da herhangi kontroller): En asp.net sayfası içinde daha sonra

public class NavigationPath 
{ 
    private string menuItems = string.Empty; 

    public NavigationPath(Page page) 
    { 
    menuItems = "<li>" + "<a href=\"" + page.ResolveClientUrl("~/Home.aspx") + "\">home</a>" + "</li>"; 
    } 
} 

Ve bir şey gibi yapmak Ayrıca, ResolveUrl("~/home.aspx");

+0

İşe yaraması için kodunuzu değiştirmek zorunda kalmayacağınız için bana sorarsanız bu en iyi çözüm gibi görünüyor! – Peter

0

Bit ile aynı sonucu veren, ancak birilerine yardımcı olabilecek VirtualPathUtility.ToAbsolute("~/home.aspx");'u kullanabilirsiniz. kullanma:

using System.Web.UI; 

Ve kodunda: Benim için çalıştı

new Control().ResolveClientUrl("Path"); 

, Yine de Web Uygulama ve Web Sitesi çözümü kullanın.

Selamlar

0

benim amaç için çok iyi çalışması için VirtualPathUtility.ToAbsolutebulundu.

mükemmel çalıştı:

protected void build_Menu() 
{ 

    StringBuilder sb = new StringBuilder(); 

    sb.Append("<li><a href='" + VirtualPathUtility.ToAbsolute("~/Default.aspx'>Home</a></li>")); 
    sb.Append("<li><a href='" + VirtualPathUtility.ToAbsolute("~/CARS/Default.aspx'>Cars</a></li>")); 
    sb.Append("<li><a href='" + VirtualPathUtility.ToAbsolute("~/AIRPLANES/Default.aspx'>Airplanes</a></li>")); 
    sb.Append("<li><a href='" + VirtualPathUtility.ToAbsolute("~/MOTORCYCLES/Default.aspx'>Motorcycles</a></li>")); 
    sb.Append("<li><a href='" + VirtualPathUtility.ToAbsolute("~/REPORTS/Default.aspx'>Reports</a></li>")); 
    sb.Append("<li><a href='" + VirtualPathUtility.ToAbsolute("~/MANUALS/Default.aspx'>Manuals</a> </li>")); 
    sb.Append("<li><a href='" + VirtualPathUtility.ToAbsolute("~/ADMINISTRATION/Default.aspx'>Administration</a></li>")); 


    MENUfromCodeBehind.Text = sb.ToString(); 

}