#c# #asp.net #gridview #directory #dynamic-data
#c# #asp.net #просмотр сетки #каталог #динамические данные
Вопрос:
//aspx.cs file
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 trash : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Response.Write("<table style='width: 10px; height: 10px; margin-left:100px'>");
foreach(var directory in new DirectoryInfo("C:\Users\naresh\Documents\Visual Studio 2010\WebSites\CMANAGER").GetDirectories())
{
Response.Write( "<tr>");
Response.Write("<td><a href= view4.aspx?folder=" directory.Name "> " directory.Name "</a></td>");
Response.Write("</tr>");
}
Response.Write("</table>");
}
}
С помощью этого кода я перечисляю все каталоги в данном каталоге с гиперссылками.Итак, если я сейчас нажму на гиперссылку, я должен вывести список всех файлов в определенном каталоге на отдельной странице.Но у меня возникла проблема с предоставлением динамического пути на основе щелкнутой гиперссылки. Пожалуйста, помогите мне в этом отношении. Спасибо..
Ответ №1:
Я думаю, вы хотите использовать directory.Полное имя для гиперссылки. Многим вам нужно кодировать URL-адрес, а затем декодировать его на новой странице, когда вы считываете его из строки запроса.
В view4.aspx после считывания папки из строки запроса снова создайте объект directory info и выполните итерацию по результатам directory.GetFiles()
Вот ссылка на класс DirectoryInfo для получения дополнительной информации http://msdn.microsoft.com/en-us/library/system.io.directoryinfo.aspx
Ответ №2:
Используя ASP.NET MVC 2 (который намного лучше, чем помещать все в Page_Load
), вы могли бы сделать это следующим образом:
HomeController.cs:
using System.IO;
using System.Web.Mvc;
namespace SO_web_directory.Controllers
{
public class HomeController : Controller
{
private static readonly string DefaultDirectory = @"C:";
public ActionResult Index(string path)
{
if (string.IsNullOrWhiteSpace(path))
path = DefaultDirectory;
return View(new DirectoryInfo(path).GetDirectories());
}
}
}
Index.aspx:
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<System.IO.DirectoryInfo[]>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Directories
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<table style='width: 10px; height: 10px; margin-left:100px'>
<% foreach (var directory in Model)
{ %>
<tr>
<td>
<%= Html.ActionLink(
directory.Name, "Index",
new RouteValueDictionary { { "path", directory.FullName } }) %>
</td>
</tr>
<%
}%>
</table>
</asp:Content>