ASP.Net C#ResolveClientUrl在Class中
我有以下代码:
public class NavigationPath { private string menuItems = "" + "home" + " ";
但我想:
public class NavigationPath { private string menuItems = "" + "re" + " ";
但是,我无法在Class中使用ResolveClientUrl。 有任何想法吗?
ResolveClientUrl是System.Web.UI.Control类的成员,因此可以直接访问:
var url = ResolveClientUrl("~/Some/Url/");
在asp.net页面的代码中调用时。
要在类中使用它,您必须将Page(或页面上的控件)传递到其构造函数中的类中。 即便如此,我也不确定你是否能按照你指示的方式使用它。 你可能不得不做类似的事情:
public class NavigationPath { private string menuItems = string.Empty; public NavigationPath(Page page) { menuItems = "" + "home" + " "; } }
然后在你的asp.net页面里做类似的事情:
var navPath = new NavigationPage(this);
您也可以使用VirtualPathUtility.ToAbsolute("~/home.aspx");
而不是在Page对象(或任何控件)上调用ResolveClientUrl
VirtualPathUtility.ToAbsolute("~/home.aspx");
这将给你与调用ResolveUrl("~/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("Home ")); sb.Append("Cars ")); sb.Append("Airplanes ")); sb.Append("Motorcycles ")); sb.Append("Reports ")); sb.Append("Manuals ")); sb.Append("Administration ")); MENUfromCodeBehind.Text = sb.ToString(); }