从服务器端asp.NET动态设置图像控件



我有一个网站,用户上传文件,文件名等保存到DB。然后将这些文件显示在数据列表中。我正试图让这个数据显示不同的图像(图标)来表示文件类型。

这是我的代码。调频。getIcon是一个自定义函数,它将服务器上的完整文件路径返回到表示文件类型的适当图像。

当我调试代码时,我可以验证图像确实存在于imgFile路径

Private Sub DataList1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles DataList1.ItemDataBound
        Dim docName As Label = e.Item.FindControl("fileNameLabel")
        Dim docImage As Image = e.Item.FindControl("image1")
        Dim imgFile As String = fm.getIcon(My.Computer.FileSystem.GetFileInfo(docName.Text).Extension)
        docImage.ImageUrl = imgFile
End Sub

我的问题是图像没有加载。如果我用硬编码的路径替换imgFile到一个图像,它工作得很好。

请尝试一下。

//第一个方法

string fileLocation = Server.MapPath("~/Images/MyFile.jpg");
FileInfo fileInfo = new FileInfo(fileLocation);
string fileExtension = fileInfo.Extension;

//第二个方法

System.IO.Path.GetExtension(Server.MapPath("~/Images/MyFile.jpg")); // Result: .jpg

//你的get图标方法

docImage.ImageUrl = "~/Icons/" + 
fm.getIcon(Path.GetExtension(Server.MapPath("~/Images/MyFile.jpg")));
public string getIcon(string extension)
{
  switch (extension.ToLower())
  {
    case ".asa":
      return "asa.png";
    case ".asax":
      return "asax.png";
    case ".ascx":
      return "ascx.png";                
    default:
      return "unknown.png";
  }
}

您应该确认fm.getIcon实际上返回的是图标图像的有效URL,而不是机器级别的文件路径。您应该能够获取fm.getIcon的输出并将其粘贴到浏览器中并看到图像。文件权限可能是一个问题,为网站服务的IIS进程需要能够读取图标图像文件。

相关内容

  • 没有找到相关文章

最新更新