asp.net中的image.src始终为空

时间:2015-10-05 06:24:50

标签: c# asp.net image

我有一个image控件,其源可以在运行时更新,因为我在其中显示员工的图片,并且这是从数据库加载的:

EmpImage.Src = "data:image/png;base64," + base64String;

并更新记录我需要检查图像源是否为空:

 if (EmpImage.Src.Length == 0)

if (EmpImage.Src == "")

但它一直显示我是空的......

我读了这个帖子ASP.NET image src question但是这里使用jquery但我需要服务器端解决方案

修改

我将图像从数据库读取到图像控制为:

if (dt.Rows[0]["Pic"] != DBNull.Value)
                {
                    byte[] bytes = (byte[])dt.Rows[0]["Pic"];
                    string base64String = Convert.ToBase64String(bytes, 0, bytes.Length);
                    // EmpImage.ImageUrl = base64String;

                    EmpImage.Src = "data:image/png;base64," + base64String;

                 }

其中dtdatatable,我是从谷歌

获得的

我需要你的帮助才能摆脱它。

我正在使用asp.net c#

提前感谢。

4 个答案:

答案 0 :(得分:2)

服务器端图像控件具有ImageUrl属性,属性为String,因此您可以直接使用字符串函数: -

if (String.IsNullOrEmpty(EmpImage.ImageUrl)
{

}

<强>更新

根据您发布的异常,确定您没有使用ASP.NET服务器端Image控件即<asp:Image,而html image控件使用runat="server" } 标签。因此,在这种情况下,由于Src属性的类型为String,因此您可以使用相同的方法: -

if (String.IsNullOrEmpty(EmpImage.Src)
{

}

答案 1 :(得分:1)

而不是Src使用ImageUrl属性

   if (dt.Rows[0]["Pic"] != DBNull.Value)
                {
                    byte[] bytes = (byte[])dt.Rows[0]["Pic"];
                    string base64String = Convert.ToBase64String(bytes, 0, bytes.Length);
                    // EmpImage.ImageUrl = base64String;

                    EmpImage.ImageUrl = "data:image/png;base64," + base64String;

                 }

答案 2 :(得分:0)

据我所知,无论何时动态设置图像源,您都不会在页面发布时获得源长度/信息。你必须使用隐藏的输入管理一些标志。

答案 3 :(得分:0)

将图像对象设置为以下演示文稿:

<强> .aspx的

<asp:Image id="test" runat="server" ImageUrl='<%# GetImage(Eval("Pic")) %>' /> 

<强> CS

  public string GetImage(object img)
    {
     string base64String ="";
    if (dt.Rows[0]["Pic"] != DBNull.Value)
                    {
                        byte[] bytes = (byte[])dt.Rows[0]["Pic"];
                        base64String = Convert.ToBase64String(bytes, 0, bytes.Length);

                     }
       return "data:image/png;base64," + base64String ;
    }