【问题标题】:Set image control image dynamically from server side asp.NET从服务器端 asp.NET 动态设置图像控制图像
【发布时间】:2011-04-14 22:58:31
【问题描述】:

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

这是我的代码。 fm.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 替换为图像的硬编码路径,它可以正常工作。

我错过了什么?

【问题讨论】:

    标签: asp.net datalist databound asp.net-controls datalistitem


    【解决方案1】:

    请试试这个。

    //第一种方法

    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
    

    // 你的获取图标方法

    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";
      }
    }
    

    【讨论】:

    • 我在 getIcon 函数中使用 server.mappath 来返回正确的 URL。
    • getIcon 方法中不需要 Server.MapPath。我编辑了答案。
    【解决方案2】:

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

    【讨论】:

    • 我可以确认路径正确且文件确实存在且权限正确
    • 实际上在最终渲染的页面上,当我“查看源代码”时路径也是正确的
    猜你喜欢
    • 2018-07-24
    • 2011-02-12
    • 1970-01-01
    • 2014-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-20
    • 1970-01-01
    相关资源
    最近更新 更多