5

.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

5 に答える 5

14

空白のページにディレクトリとファイルを表示する

// 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>
于 2011-05-18T16:17:58.757 に答える
1

Console.WriteLine()useを使用しないでくださいResponse.Write()。Webアプリケーションでコンソールに書き込もうとしています。

于 2011-05-18T15:36:48.303 に答える
1

Console.WriteLineは、返されるWebページのコンテンツではなく、コンソールに書き込みます。ASPXページにコンテナ要素(おそらくグリッドビューまたはリピーター)を追加してから、コードビハインドファイルからファイルリストを追加割り当てする必要があります(追加したHTML要素にrunat='server'タグを使用して割り当てますID、次にコード内のID名で参照します)。

于 2011-05-18T15:38:58.133 に答える
1

Response.Write in static 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>
于 2011-05-18T15:46:01.857 に答える
0

ディレクトリクラスを使用できます

  • 最初のパラメーターは、相対パスまたは絶対パスです。
  • パス内のサブディレクトリの名前と照合するための2番目のパラメータ。このパラメーターには、有効なリテラル文字とワイルドカード文字の組み合わせを含めることができますが、正規表現はサポートされていません。

/

//using System.IO; 
private void GetDirectories()
{
    DataTable dt = new DataTable();
    dt.Columns.Add("direction",typeof(string));
    try
    {
        string[] dirs = Directory.GetDirectories(@"yourpath", "*", SearchOption.AllDirectories);
        foreach (string dir in dirs)
        {
            dt.Rows.Add(dir);
        }
        if (dirs.Length <= 0)
        {
             lbl.text="your message"

        }

       rpt.DataSource = dt; //your repeater 
       rpt.DataBind(); //your repeater 
    }
    catch (Exception e)
    {
       lbl.text="your message"//print message assign it to label
    }
}

aspxページで

   <asp:Label runat="server" ID="lbl"></asp:Label>
    <asp:Repeater ID="rpt" runat="server" ClientIDMode="AutoID">
        <ItemTemplate>
            <tr>
                <td><%#Eval("direction")%></td>

            </tr>
        </ItemTemplate>
    </asp:Repeater>
于 2019-10-29T23:27:12.793 に答える