2012-09-03 21 views
5

que tienen esta tablaCómo abrir un archivo haciendo clic en el hipervínculo

enter image description here

quiero hacer clic en el enlace y el archivo (cualquier archivo) se abrirá en una nueva ventana emergente.

Aquí está mi código:

<asp:Repeater ID="dokumente" runat="server"> 
    <ItemTemplate> 
     <tr> 
      <td><asp:HyperLink ID="HyperLink4" runat="server" Text='<%# Eval("DokuTyp") %>' NavigateUrl='file://<%# Eval("File") %>'></asp:HyperLink></td> 
      <td><%# Eval("Description")%></td> 
      <td><%# Eval("Date") %></td> 
      <td><%# Eval("File") %></td> 
     </tr> 
    </ItemTemplate> 
</asp:Repeater> 

Pero no funciona con NavigateUrl. ¿Alguien puede ayudarme en esto o en alguna idea de cómo hacer esto? Gracias

+2

usted se refiere a una columna "DokuTyp" que no existe, de acuerdo con la captura de pantalla de la estructura de la tabla. Siguiente: "No funciona" suele ser la peor descripción de error, me imagino. Tercero: Señalar un archivo local del servidor desde una página HTTP, la mayoría de las veces es incorrecto, a menos que esté usando un navegador en el servidor mismo. –

+0

¿qué problema o error ha ocurrido? – SMK

+0

Uwe: Hola, la columna existe y no hay ningún error :) SMK: Hola, no hay ningún problema o error, simplemente no sucedió nada cuando hice clic en el enlace. Creo que NavigateUrl definitivamente está mal. – Ragnarsson

Respuesta

5

El archivo: /// es para recursos en su propia máquina.

Para abrir archivos en un servidor, tendrá que enlazar con las URL en el servidor. Uso:

HttpContext.Current.Request.ResolveUrl(pathOnServer); 

cambiar el código de la siguiente manera:

<asp:Repeater ID="dokumente" runat="server"> 
    <ItemTemplate> 
     <tr> 
      <td><asp:HyperLink ID="HyperLink4" runat="server" Text='<%# Eval("DokuTyp") %>' NavigateUrl='<%# HttpContext.Current.Request.ResolveUrl(Eval("File")) %>'></asp:HyperLink></td> 
      <td><%# Eval("Description")%></td> 
      <td><%# Eval("Date") %></td> 
      <td><%# Eval("File") %></td> 
     </tr> 
    </ItemTemplate> 
</asp:Repeater> 

donde servidor

+0

Recibo el error "ResolveUrl no es miembro de System.Web.HttpRequest" – chamara

+0

¿Dónde lo usa? Este es un método de extensión disponible para los controles. – nunespascal

1

El protocolo "archivo" abre un archivo en la computadora del usuario. Supongo que tiene que leer el archivo en el lado del servidor y llamar a Resposne.Write.

0

Si desea encontrar el archivo en el servidor puede utilizar Server.MapPath método; "File: //" no es correcta URL si quieres encontrar el archivo en el servidor

NavigateUrl=<%#Server.MapPath(DataBinder.Eval("File"))%> 
Cuestiones relacionadas