c#
  • asp.net
  • visual-studio-2010
  • web-applications
  • hyperlink
  • 2012-09-03 151 views 5 likes 
    5

    打開文件我有這個表如何通過單擊超鏈接

    enter image description here

    我要點擊的鏈接和文件(任何文件)將在新彈出的窗口中打開上。

    這裏是我的代碼:

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

    但它不與NavigateUrl工作。任何人都可以幫助我解決這個問題或任何想法如何做到這一點。謝謝

    +2

    您指的不存在的列「DokuTyp」文件,根據你的表結構的屏幕截圖。接下來:「這不起作用」通常是最糟糕的錯誤描述,我可以想象。第三:從HTTP頁面指向服務器本地文件,大多數情況都是錯誤的,除非你在服務器本身上使用瀏覽器。 –

    +0

    發生了什麼問題或錯誤? – SMK

    +0

    Uwe:嗨,列確實存在,但沒有錯誤雖然:) SMK:嗨,沒有問題或錯誤發生,當我點擊鏈接時什麼都沒有發生。我認爲NavigateUrl絕對是錯誤的。 – Ragnarsson

    回答

    5

    該文件:///用於您自己機器上的資源。

    要打開服務器上的文件,您必須鏈接到服務器上的URL。 用途:

    HttpContext.Current.Request.ResolveUrl(pathOnServer); 
    

    改變這樣的代碼:

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

    如果服務器

    +0

    我收到錯誤「ResolveUrl不是System.Web.HttpRequest的成員」 – chamara

    +0

    你在哪裏使用它?這是可用於控件的擴展方法。 – nunespascal

    1

    「文件」協議在用戶計算機上打開一個文件。 我想你必須讀取服務器端的文件並調用Resposne.Write。

    0

    如果你想找到服務器上的文件,你可以使用Server.MapPath方法; 「文件://」是不正確的網址,如果你想找到服務器

    NavigateUrl=<%#Server.MapPath(DataBinder.Eval("File"))%> 
    
    相關問題