我做个一个ASP.NET网站,包括前台和后台,我现在想遍历出前台和后台所有页面的名称前台
aa.aspx
bb.aspx
cc.aspx
dd.aspx后台
admin/n1.aspx
admin/n2.aspx
admin/n3.aspx1.我想动态遍历出这些文件名2.想通过知道页面的名称,来遍历指定页面上的所有控件的名称。用过以下方法,但是只能遍历当前页面的,指定页面的不行/// <summary>
/// 有效遍历asp.net页面所有控件的方法
/// </summary>
/// <param name="parent">this</param>
void IterateThroughChildren(Control parent)
{
foreach (Control c in parent.Controls)
{
//Label1.Text += c.ID + "|";//示例
if (c.Controls.Count > 0) // 判断该控件是否有下属控件。
{
IterateThroughChildren(c); //递归,访问该控件的下属控件集。 }
}
}
我也看见网上有方法就是,对每一个控件都进行判断如,页面中包括TextBox吗?包括checkBox吗?等来逐一判断,这种效率太低了,有没有好的方法,请高手指点!
aa.aspx
bb.aspx
cc.aspx
dd.aspx后台
admin/n1.aspx
admin/n2.aspx
admin/n3.aspx1.我想动态遍历出这些文件名2.想通过知道页面的名称,来遍历指定页面上的所有控件的名称。用过以下方法,但是只能遍历当前页面的,指定页面的不行/// <summary>
/// 有效遍历asp.net页面所有控件的方法
/// </summary>
/// <param name="parent">this</param>
void IterateThroughChildren(Control parent)
{
foreach (Control c in parent.Controls)
{
//Label1.Text += c.ID + "|";//示例
if (c.Controls.Count > 0) // 判断该控件是否有下属控件。
{
IterateThroughChildren(c); //递归,访问该控件的下属控件集。 }
}
}
我也看见网上有方法就是,对每一个控件都进行判断如,页面中包括TextBox吗?包括checkBox吗?等来逐一判断,这种效率太低了,有没有好的方法,请高手指点!
导入system.IO
System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(@"你的目录");
System.IO.FileInfo[] fimore = di.GetFiles();
foreach (System.IO.FileInfo fi in fimore)
{
Response.Write(fi.Name);
Response.Write("<br>");
}
public class BasePage:System.Web.UI.Page
{
protected override void OnLoad(EventArgs e)
{
if (Request["getctls"] != null)
{
foreach (Control ctl in this.Controls)
{
Response.Write(ctl.ID + "|");
}
Response.End();
}
base.OnLoad(e);
}
}
每个aspx页面都继承该类
遍历页面文件并显示每个页面包含的控件代码: string root = Server.MapPath("/");
string[] files = System.IO.Directory.GetFiles(root, "*.aspx");
foreach (string f in files)
{
string page = f.Replace(root, "");
Response.Write("页面文件:" + page + "<br />包含控件:<br />");
string str = new System.Net.WebClient().DownloadString(string.Format("http://{0}/{1}?getctls=1", Request.Url.Host, page));
Response.Write(str);
Response.Write("<hr />");
}
Directory.GetFiles("","*.aspx").ToList().ForEach(
Path=>
{
list.Add(Path);
}
);
System.IO.DirectoryInfo dir= new DirectoryInfo("");
foreach (System.IO.FileInfo item in dir.GetFiles("*.cs", SearchOption.AllDirectories ))
{
}
file.readalltext通过正则获取相关控件
楼上的string root = Server.MapPath("/");这句不能调出网站的虚拟路径啊?
显示错误 未能映射路径“/”
帮忙解决一下吧!
新问题是string str = new System.Net.WebClient().DownloadString(string.Format("http://{0}/{1}?getctls=1", Request.Url.Host, page));
显示 远程服务器返回错误: (404) 未找到。
如果你是本地测试 可以手动写URL,如:
string str = new System.Net.WebClient().DownloadString(string.Format("http://{0}/{1}?getctls=1", "localhost:5678", page));
这样跟线上环境才能一致