ASP.Net C#ResolveClientUrl在Class中

我有以下代码:

public class NavigationPath { private string menuItems = "
  • " + "home" + "
  • ";

    但我想:

     public class NavigationPath { private string menuItems = "
  • " + "re" + "
  • ";

    但是,我无法在Class中使用ResolveClientUrl。 有任何想法吗?

    ResolveClientUrl是System.Web.UI.Control类的成员,因此可以直接访问:

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

    在asp.net页面的代码中调用时。

    要在类中使用它,您必须将Page(或页面上的控件)传递到其构造函数中的类中。 即便如此,我也不确定你是否能按照你指示的方式使用它。 你可能不得不做类似的事情:

     public class NavigationPath { private string menuItems = string.Empty; public NavigationPath(Page page) { menuItems = "
  • " + "home" + "
  • "; } }

    然后在你的asp.net页面里做类似的事情:

     var navPath = new NavigationPage(this); 

    您也可以使用VirtualPathUtility.ToAbsolute("~/home.aspx");而不是在Page对象(或任何控件)上调用ResolveClientUrl VirtualPathUtility.ToAbsolute("~/home.aspx"); 这将给你与调用ResolveUrl("~/home.aspx");相同的结果ResolveUrl("~/home.aspx");

    有点老但可能会帮助别人。 使用:

     using System.Web.UI; 

    在代码中:

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

    虽然为我工作,但我使用Web应用程序而不是Web站点解决方案。

    问候

    我发现VirtualPathUtility.ToAbsolute非常适合我的目的。

    工作得很完美:

     protected void build_Menu() { StringBuilder sb = new StringBuilder(); sb.Append("
  • Home
  • ")); sb.Append("
  • Cars
  • ")); sb.Append("
  • Airplanes
  • ")); sb.Append("
  • Motorcycles
  • ")); sb.Append("
  • Reports
  • ")); sb.Append("
  • Manuals
  • ")); sb.Append("
  • Administration
  • ")); MENUfromCodeBehind.Text = sb.ToString(); }