Получение динамического пути на основе ссылки, по которой щелкают - PullRequest
1 голос
/ 18 мая 2011
//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 голосов
/ 19 мая 2011

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

На view4.aspx после считывания папки из строки запроса снова создайте объект информации каталога и выполните итерации по результатам directory.GetFiles ()

Вот ссылка на класс DirectoryInfo для получения дополнительной информации http://msdn.microsoft.com/en-us/library/system.io.directoryinfo.aspx

0 голосов
/ 19 мая 2011

Используя 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...