Question

Je le code suivant:

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

Mais je voudrais avoir:

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

Cependant, je ne suis pas en mesure d'utiliser ResolveClientUrl l'intérieur d'une classe. Toutes les idées?

Était-ce utile?

La solution

ResolveClientUrl est membre de la classe System.Web.UI.Control, directement d'où il est accessible:

var url = ResolveClientUrl("~/Some/Url/");

lorsqu'il est appelé dans le code de votre page asp.net.

Pour l'utiliser dans une classe que vous allez devoir passer la page (ou un contrôle sur la page) dans la classe dans son constructeur. Même alors, je ne suis pas sûr que vous seriez en mesure de l'utiliser de la manière que vous avez indiqué. Vous auriez sans doute faire quelque chose de similaire à:

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

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

Et puis à l'intérieur de votre page asp.net faire quelque chose comme:

var navPath = new NavigationPage(this);

Autres conseils

Au lieu d'appeler ResolveClientUrl sur l'objet de la page (ou de tout contrôle), vous pouvez également utiliser VirtualPathUtility.ToAbsolute("~/home.aspx"); qui vous donnera le même résultat que l'appel ResolveUrl("~/home.aspx");

peu vieux mais peut aider quelqu'un. En utilisant:

using System.Web.UI;

Et dans le code:

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

A travaillé pour moi, j'utilise l'application Web et non une solution de site Web, cependant.

Cordialement

J'ai trouvé VirtualPathUtility.ToAbsolute pour travailler très bien pour mon but.

A travaillé parfaitement:

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

}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top