从我的项目中获取aspx文件集合

时间:2013-03-16 22:22:11

标签: c#

如何读取我项目中的所有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);
}

3 个答案:

答案 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));