質問

私は、次のコードを持っています:

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を使用することはできませんよ。任意のアイデア?

役に立ちましたか?

解決

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>";
  }
}

そして、あなたのasp.netのページ内のような何かをします:

var navPath = new NavigationPage(this);

他のヒント

の代わりにPageオブジェクト(または任意のコントロール)にResolveClientUrlを呼び出し、あなたはまた、

VirtualPathUtility.ToAbsolute("~/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("<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();

}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top