문제

다음 코드가 있습니다.

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

다른 팁

전화하는 대신 ResolveClientUrl 페이지 개체 (또는 컨트롤)에서 사용할 수도 있습니다. VirtualPathUtility.ToAbsolute("~/home.aspx"); 전화와 동일한 결과를 줄 것입니다 ResolveUrl("~/home.aspx");

조금 늙었지만 누군가를 도울 수 있습니다. 사용 :

using System.Web.UI;

그리고 코드 :

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

}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top