如何读取我项目中的所有aspx文件名?我需要获取我的aspx文件的集合。
我想将它们添加到DropDownList
。
像
foreach(ASPX file in myProject.aspx.collections) {
dropdownlist1.Items.Add(file.name);//Name could be: Default.aspx
}
提前致谢。
编辑:谢谢各位朋友,你的所有答案都是正确的。最后我做了下一个:
string sourceDirectory = Server.MapPath("~/");
DirectoryInfo directoryInfo = new DirectoryInfo(sourceDirectory);
var aspxFiles = Directory.EnumerateFiles(sourceDirectory, "*.aspx", SearchOption.TopDirectoryOnly).Select(Path.GetFileName);
foreach (string currentFile in aspxFiles) {
this.dropdownlist1.Items.Add(currentFile);
}
答案 0 :(得分:2)
通过反思,这应该有效:
public static IEnumerable<string> getAspxNames()
{
var pageTypes = Assembly.GetExecutingAssembly().GetTypes()
.Where(t => t.BaseType == typeof(Page));
return pageTypes.Select(t => t.Name).ToList();
}
// ...
foreach(string pageName in getAspxNames())
dropdownlist1.Items.Add(pageName + ".aspx");
答案 1 :(得分:1)
您可以像读取文件夹中的任何文件一样阅读文件。
只需要将虚拟文件夹引用“转换”为物理文件夹:
http://forums.asp.net/t/1273264.aspx/1
然后你可以使用带有aspx过滤器的Directory.EnumerateFiles()来获取所有文件。
答案 2 :(得分:1)
试试这个:
var dirPath = Server.MapPath("~/");
var ext = new List<string> {".aspx"};
var fileList = Directory.GetFiles(dirPath, "*.*", SearchOptions.AllDirectories)
.Where(s => ext.Any(ex => s.EndsWith(ex));
dropdownlist1.DataSource = fileList;
dropdownlist1.DataBind();
仅限文件名执行此操作
foreach(string file in fileList)
dropdownlist1.Items.Add(Path.GetFileName(file));