2009-09-16 17 views
5

Ho un programma di caricamento file scritto in ASP.NET MVC. È attualmente sul mio computer di sviluppo locale e vorrei sapere come (se possibile) generare un collegamento per ogni file caricato in modo che quando viene cliccato, l'elemento sia visualizzato/scaricato ecc.Percorso mappa del file locale ASP.NET/MVC

Codice corrente/markup che gestisce la visualizzazione di elenco di file:

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

immagino dovrò cambiare il codice del file di gestione intorno una volta che questo va in diretta, ma per ora questo è sufficiente. I suggerimenti sono i benvenuti :)

Grazie!

risposta

12

Uso Url.Content, es .:

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

I mezzi tilde "la radice del mio sito, ovunque che sembra essere". Non è necessario inserire i file nel contenuto; puoi metterli dove vuoi sotto la radice del tuo sito.

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

+1 proprio quello che volevo (per MVC3 - collegamento a elmah.axd), grazie! – ashes999

7

Sì l'equivalente appropriato per BaseDirectory in un app ASP.NET è HttpRuntime.AppDomainAppPath. Tuttavia, potresti anche trovare utile il metodo Server.MapPath. Si arriva al metodo server tramite HttpContext.Current.Server.

Detto questo sei sicuro di volere questo tipo di codice nella tua vista. Mi sembra che l'elenco di valori che si desidera visualizzare debba essere generato dal controller.

Problemi correlati