18

我有以下代码:

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

但我想拥有:

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

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

4

4 回答 4

49

除了调用ResolveClientUrlPage 对象(或任何控件),您还可以使用VirtualPathUtility.ToAbsolute("~/home.aspx");which 将给您与调用相同的结果ResolveUrl("~/home.aspx");

于 2010-02-10T17:14:46.843 回答
8

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 = "<li>" + "<a href=\"" + page.ResolveClientUrl("~/Home.aspx") + "\">home</a>" + "</li>";
  }
}

然后在您的 asp.net 页面中执行以下操作:

var navPath = new NavigationPage(this);
于 2010-02-10T16:45:31.463 回答
0

有点旧,但可能会帮助某人。使用 :

using System.Web.UI;

在代码中:

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

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

问候

于 2014-02-12T10:58:00.803 回答
0

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

完美工作:

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();

}
于 2014-09-15T16:23:08.123 回答