根据单击的链接获取动态路径

时间:2011-05-18 19:32:45

标签: c# asp.net gridview directory dynamic-data

//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>");
}

}

使用此代码我列出了给定目录中的所有目录的超链接。所以,如果我现在点击超链接,我应该在单独的页面中列出特定目录中的所有文件。但是我遇到了问题根据单击的超链接给出动态路径。 请帮助我这方面。 谢谢..

2 个答案:

答案 0 :(得分:0)

使用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>

答案 1 :(得分:0)

我认为你想使用directory.FullName作为超链接。您需要对其进行url编码,然后在从查询字符串中读取它时在新页面上对其进行解码。

在从查询字符串中读取文件夹后的view4.aspx上,再次创建一个目录信息对象并迭代目录的结果.GetFiles()

以下是DirectoryInfo类的链接以获取更多信息 http://msdn.microsoft.com/en-us/library/system.io.directoryinfo.aspx