ASP.Net C # ResolveClientUrl dentro Classe
-
19-09-2019 - |
Pergunta
Eu tenho o seguinte código:
public class NavigationPath
{
private string menuItems = "<li>" +
"<a href=\"#\">home</a>" +
"</li>";
Mas eu gostaria de ter:
public class NavigationPath
{
private string menuItems = "<li>" +
"<a href=\"" + ResolveClientUrl("~/home.aspx") + "\">re</a>" +
"</li>";
No entanto, eu não sou capaz de usar ResolveClientUrl dentro de uma classe. Alguma idéia?
Solução
ResolveClientUrl é um membro da classe System.Web.UI.Control, portanto, é acessível diretamente como:
var url = ResolveClientUrl("~/Some/Url/");
quando chamado dentro do código de sua página asp.net.
Para usá-lo dentro de uma classe que você vai ter que passar a página (ou um controle na página) para a classe em seu construtor. Mesmo assim, eu não tenho certeza que você seria capaz de usá-lo da maneira que você indicou. Você provavelmente teria que fazer algo semelhante a:
public class NavigationPath
{
private string menuItems = string.Empty;
public NavigationPath(Page page)
{
menuItems = "<li>" + "<a href=\"" + page.ResolveClientUrl("~/Home.aspx") + "\">home</a>" + "</li>";
}
}
E, em seguida, dentro de sua página asp.net fazer algo como:
var navPath = new NavigationPage(this);
Outras dicas
Em vez de chamar ResolveClientUrl
sobre o objeto Page (ou quaisquer controles), você também pode usar VirtualPathUtility.ToAbsolute("~/home.aspx");
que lhe dará o mesmo resultado que chamar ResolveUrl("~/home.aspx");
pouco antiga, mas poderia ajudar alguém. Usando:
using System.Web.UI;
E em código:
new Control().ResolveClientUrl("Path");
funcionou para mim, eu uso o Web Application e não solução Web Site, no entanto.
Saudações
Eu encontrei VirtualPathUtility.ToAbsolute para o trabalho muito bem para o meu propósito.
Funcionou perfeitamente:
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();
}