2016-03-02 84 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