ASP.Net C#ResolveClientUrl类内

ASP.Net C#ResolveClientUrl类内,c#,asp.net,class,relative-path,resolveclienturl,C#,Asp.net,Class,Relative Path,Resolveclienturl,我有以下代码: public class NavigationPath { private string menuItems = "<li>" + "<a href=\"#\">home</a>" + "</li>"; 公共类导航路径 { 私有字符串menuItems=“”+ "" + “”; 但我想:

我有以下代码:

public class NavigationPath
{
    private string menuItems = "<li>" +
                                    "<a href=\"#\">home</a>" +
                               "</li>";
公共类导航路径
{
私有字符串menuItems=“
  • ”+ "" + “
  • ”;
    但我想:

    public class NavigationPath
    {
        private string menuItems = "<li>" +
                                        "<a href=\"" + ResolveClientUrl("~/home.aspx") + "\">re</a>" +
                                   "</li>";
    
    公共类导航路径
    {
    私有字符串menuItems=“
  • ”+ "" + “
  • ”;

    但是,我无法在类中使用ResolveClientUrl。有什么想法吗?

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

    var url = ResolveClientUrl("~/Some/Url/");
    
    在asp.net页面的代码中调用时

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

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

    除了在页面对象(或任何控件)上调用
    ResolveClientUrl
    ,您还可以使用
    VirtualPath实用性.ToAbsolute(“~/home.aspx”);
    ,这将给出与调用
    ResolveUrl(“~/home.aspx”);
    相同的结果,但可能会帮助到其他人。 使用:

    在代码中:

    new Control().ResolveClientUrl("Path");
    
    不过,对于我来说,我使用的是Web应用程序,而不是Web站点解决方案


    关于

    我发现了虚拟实用性。为了达到我的目的,我会采取绝对的

    工作完美:

    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();
    
    }
    
    protectedvoid build_菜单()
    {
    StringBuilder sb=新的StringBuilder();
    某人加上(“
  • ”); 某人加上(“
  • ”); 某人加上(“
  • ”); 某人加上(“
  • ”); 某人加上(“
  • ”); 某人加上(“
  • ”); 某人加上(“
  • ”); MENUfromCodeBehind.Text=sb.ToString(); }
    如果你问我,这似乎是最好的解决方案,因为你不必修改代码就能让它工作!
    new Control().ResolveClientUrl("Path");
    
    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();
    
    }