Путь к карте локального файла ASP.NET/MVC - PullRequest
5 голосов
/ 17 сентября 2009

У меня есть программа загрузки файлов, написанная на ASP.NET MVC. В настоящее время он находится на моей локальной машине разработки, и я хотел бы знать, как (если это возможно) создать ссылку для каждого загруженного файла, чтобы при нажатии на него отображался / загружался элемент и т. Д.

Текущий код / ​​разметка, которая обрабатывает отображение списка файлов:

<table>
    <tr>
        <th></th>
        <th>
            Name
        </th>
        <th>
            Length
        </th>
        <th></th>
    </tr>
    <%
    var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "uploads");
    foreach (var file in Directory.GetFiles(path))
    {
        var item = new FileInfo(file);
    %>
    <tr>
        <td></td>
        <td>
            <%=Html.Encode(Path.GetFileName(item.Name))%>
        </td>
        <td>
            <%=Html.Encode(item.Length >= 1024 ? item.Length / 1024 + " kilobytes" : item.Length + " bytes")%>
        </td>
        <td>
            // This is the line in question. Does not work as-is.
            <a href="<%= item.FullName %>"><%= Html.Encode(Path.GetFileName(item.Name)) %></a>
        </td>
    </tr>
    <% } %>
</table>

Я предполагаю, что мне придется изменить код обработки файла, как только он будет запущен, но пока этого достаточно. Предложения также приветствуются:)

Спасибо!

Ответы [ 3 ]

12 голосов
/ 17 сентября 2009

Использовать Url.Content, например ::10000

<img src="<%= Url.Content("~/Content/UserImages/FileName.jpg") %>" />

Тильда означает «корень моего сайта, где бы он ни находился». Вам не нужно помещать свои файлы в Контент; вы можете поместить их где угодно в корневой каталог вашего сайта.

7 голосов
/ 17 сентября 2009

Да, соответствующий эквивалент BaseDirectory в приложении ASP.NET - HttpRuntime.AppDomainAppPath. Однако вы можете также найти способ Server.MapPath полезным. Вы получаете на сервер метод через HttpContext.Current.Server.

Сказав, что вы уверены, что хотите такой код на ваш взгляд. Мне кажется, что список значений, которые вы хотите отобразить, должен быть сгенерирован контроллером.

1 голос
/ 17 сентября 2009
<a href="<%= Url.Content(System.Web.VirtualPathUtility.ToAppRelative("~/" + file.Substring(AppDomain.CurrentDomain.BaseDirectory.Length))) %></a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...