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 ページのコード内で呼び出された場合。

クラス内で使用するには、ページ (またはページ上のコントロール) をコンストラクターでクラスに渡す必要があります。それでも、あなたが示した方法でそれを使用できるかどうかはわかりません. おそらく次のようなことをしなければならないでしょう:

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サイトソリューションではなく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 に答える