Список папок в каталоге с использованием asp.net и C # - PullRequest
4 голосов
/ 18 мая 2011

.aspx файл:

<%@ Import Namespace="System.IO" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>Explorer</title>
</head>
<body>
<form id="form1" runat="server">
</form>
</body>
</html>

.CS файл:

 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Web;
 using System.Web.UI;
 using System.Web.UI.WebControls;
 using System.IO;

public partial class view2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
    string path = "~/";
    GetFilesFromDirectory(path);
}

private static void GetFilesFromDirectory(string DirPath)
{
         try
         {
             DirectoryInfo Dir = new DirectoryInfo(DirPath);
             FileInfo[] FileList = Dir.GetFiles("*.*", SearchOption.AllDirectories);
             foreach (FileInfo FI in FileList)
             {
                 Console.WriteLine(FI.FullName);
             }
         }
         catch (Exception ex)
         {
                Console.WriteLine(ex.Message);
         }
}

Я хочу перечислить папки в определенном каталоге, но он постоянно показывает пустую страницу. Может кто-нибудь сказать, в чем проблема в коде.

Ответы [ 4 ]

12 голосов
/ 18 мая 2011

Отображение каталогов и файлов на пустой странице

// YourPage.aspx
<%@ Import Namespace="System.IO" %>
<html>
<body>
    <% foreach (var dir in new DirectoryInfo("E:\\TEMP").GetDirectories()) { %>
        Directory: <%= dir.Name %><br />

        <% foreach (var file in dir.GetFiles()) { %>
            <%= file.Name %><br />
        <% } %>
        <br />
    <% } %>
</body>
</html>
1 голос
/ 18 мая 2011

Console.WriteLine будет записывать в консоль, а не содержимое веб-страницы, которую вы возвращаете. Вам необходимо добавить элемент контейнера на страницу ASPX, возможно, в виде сетки или повторителя, а затем добавить список файлов из кода, стоящего за файлом (для добавленного HTML-элемента используйте тег runat = 'server' и назначьте ему ID, затем укажите его по идентификатору в коде).

1 голос
/ 18 мая 2011

Response.Write в статическом методе codebehind: DIRTY! Кроме того, вы не контролировали позицию, где вы пишете. Это немного чище ...

// YourPage.aspx
<%@ Import Namespace="System.IO" %>
<html>
<body>
    <ul>
        <% foreach(var file in Directory.GetFiles("C:\\Temp", "*.*", SearchOption.AllDirectories)) { %>
        <li><%= file %></li>       
        <% } %>     
    </ul>
</body>
</html>
1 голос
/ 18 мая 2011

Не используйте Console.WriteLine() используйте Response.Write(). Вы пытаетесь записать на консоль в веб-приложении.

...