2009-09-16 3 views
5

У меня есть программа загрузки файлов, написанная в ASP.NET MVC. В настоящее время он находится на моей локальной машине разработки, и я хотел бы знать, как (если это возможно) создать ссылку для каждого загруженного файла, поэтому, когда она будет нажата, элемент отображается/загружается и т. Д.Путь к карте локального файла 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> 

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

Спасибо!

ответ

12

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

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

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

1
<a href="<%= Url.Content(System.Web.VirtualPathUtility.ToAppRelative("~/" + file.Substring(AppDomain.CurrentDomain.BaseDirectory.Length))) %></a> 
+0

+1 только то, что я хотел (для MVC3 - ссылка на elmah.axd), спасибо! – ashes999

7

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

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

Смежные вопросы