2016-03-02 63 views
1

我想動態設置圖像。圖像控件不顯示圖像,但顯示替代文本。我使用VS 2008與vb.net。我使用this的信息來構建代碼。在調試過程中,文件路徑是正確的。圖像控制不顯示圖像使用mappath屬性vb.net

VB代碼:

  Dim strImgURL As String = "C:\fldr1\fldr2\Projfldr3\images\emps\" 'local dev path where visual studio solution is located 
      Dim filename As String = System.IO.Path.Combine(strImgURL, Session("EmpID").ToString() & ".jpg")    

      If (File.Exists(filename)) Then 
       imgEmp.ImageUrl = filename 
      Else 
       filename = System.IO.Path.Combine(strImgURL, "99999.jpg") 
       imgEmp.ImageUrl = filename 
      End If   

ASPX:

<asp:image id="imgEmp" Runat="server" Height="100px" Width="77px" 
         AlternateText="Employee's picture" /> 

這是錯誤的用 「IO.Path.combine」 傳遞給的ImageUrl什麼時候?

UPDATE:在這個仍在工作與教訓使用的MapPath屬性來設置路徑圖片來自此threadthread教訓。理論上,映射應該在我測試的任何環境中檢測映像文件夾的文件路徑。

我可以得到一個圖像顯示的唯一方法是如果我像下面硬編碼文件名值(完全刪除任何mappath代碼和system.io.path.combine()代碼)。順便說一句,我採取了詮釋會話變量,Session("EmpID")轉換爲字符串創建文件名屬性(如12345) - 沒有的我使用的轉換方法是有效的:

1. Session("EmpID").ToString() (or Convert.ToString(Session("EmpID")) 
2. strEmpID =Session("EmpID").ToString() + ".jpg" 


strImgURL = "http://server/images/" + strEmpID + ".jpg" 
+0

請檢查您的結果'文件名',然後檢查它是否存在...這將有很大幫助。 – Ian

回答

0

根據您所提供的鏈接,System.IO.Path.Combine會自動向字符串中添加正斜槓。然後嘗試在strImgURL結束時去除多餘的斜槓:

Dim strImgURL As String = "C:\fldr1\fldr2\Projfldr3\images\emps" 

希望這會有所幫助。 :)

+0

不,情況並非如此......有或沒有前進空間的結果將是相同的。這就是'Path.Combine'畢竟是爲了幫助我們解決歧義。 – Ian

+0

@Mark,我按照你的建議刪除了斜槓後面的斜槓,現在我得到一個方形X塊,圖像應該出現。在除了替代文本之外什麼也沒有。它表現得像知道它在那裏,但它仍然沒有顯示。 – Doreen

+0

@Doreen嘗試調試它,如果imgEmp.ImageUrl路徑是正確的?或路徑中的圖像存在? – Mark