.aspx file:
<%@ Import Namespace=\"System.IO\" %>
Display directories and files on a blank page
// 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>
Console.WriteLine will write to the console, not the web page contents you are returning. You need to add a container element to your ASPX page, probably a grid view or repeater, then add assign the file list from the code behind file (to the HTML element you added, use the runat='server' tag and assign it an ID, then reference it by ID name in the code).
You can use Directory class
/
//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
}
}
In the aspx page
<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>
Don't use Console.WriteLine()
use Response.Write()
. You're trying to write to the console in a web application.
Response.Write in a static codebehind method: DIRTY! In addition you did't control the position where you write. This a little bit cleaner...
// 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>