我正在尝试动态设置图像。图像控件不显示图像,但显示替换文本。我正在使用VS 2008和vb.net。我使用this帖子中的信息来构建代码。在调试期间,文件路径是正确的。
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" />
传递给ImageUrl时使用“IO.Path.combine”是错误的吗?
更新:使用MapPath属性设置图像路径,从此thread和此thread获取的经验教训仍然可以解决这个问题。理论上,mappath应该在我正在测试的任何环境中检测图像文件夹的文件路径。
我可以获得图像的唯一方法是如果我硬编码文件名值如下(完全删除任何mappath代码和system.io.path.combine()代码)。顺便说一句我正在使用Int会话变量,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 :(得分:0)
根据您提供的链接, System.IO.Path.Combine 会自动向字符串添加正斜杠。然后尝试在strImgURL结束时删除多余的正斜杠:
Dim strImgURL As String = "C:\fldr1\fldr2\Projfldr3\images\emps"
希望这会有所帮助。 :)