ASP.Net C#ResolveClientUrl在Class中

Mar*_*rco 18 c# asp.net class relative-path resolveclienturl

我有以下代码:

public class NavigationPath
{
    private string menuItems = "<li>" +
                                    "<a href=\"#\">home</a>" +
                               "</li>";
Run Code Online (Sandbox Code Playgroud)

但我希望:

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

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

Pau*_*wan 49

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


Rob*_*Rob 8

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

var url = ResolveClientUrl("~/Some/Url/");
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

var navPath = new NavigationPage(this);
Run Code Online (Sandbox Code Playgroud)