数据绑定误解

时间:2016-06-05 12:08:50

标签: c# asp.net

我遇到了问题,我需要你的帮助:

我正在创建一个Web应用程序来访问我需要在像(ListView或DataList)这样的工具中显示它们的员工列表,以直接绑定数据库中的数据,并且数据库中有一个字段保存为图像我需要用我在这里提到的细节来展示那个图像 enter image description here

然后我创建一个ASP处理程序来流式处理图像,它采用查询字符串("代码"),其返回的字节流包括" data:image / png; base64,image"

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using TimeSheet.DstTableAdapters;

namespace TimeSheet
{
    /// <summary>
    /// Summary description for emp_img
    /// </summary>
    public class emp_img : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            string emp_code = context.Request.QueryString["code"];
            string output_img = "";
            string no_image = "i remove the image code from here ";
            string male = "i remove the image code from here ";

            if (emp_code == null || emp_code == "")
            {
                output_img = no_image;
            }
            else
            {

                try
                {
                    EmployeeTableAdapter adp = new EmployeeTableAdapter();
                    Dst.EmployeeDataTable all_emps = adp.get_by_code(emp_code);
                    foreach (Dst.EmployeeRow emp in all_emps)
                    {
                        if (emp.Data == null)
                        {
                            //here to add the users without image 
                            output_img = male;
                        }
                        else
                        {
                            byte[] bytes = emp.Data;
                            string base64String = Convert.ToBase64String(bytes, 0, bytes.Length);
                            output_img = "data:image/png;base64," + base64String;
                        }


                    }
                }
                catch (Exception)
                {

                    output_img = no_image;
                }



                context.Response.BinaryWrite(GetBytes(output_img));
                context.Response.End();

            }

        }

然而,当我尝试在我的代码中使用那种方式时......

        <asp:ListView ID="ListView1" runat="server" DataSourceID="myteamdata" ItemPlaceholderID="placeholder" OnItemInserting="ListView1_ItemInserting" >
            <LayoutTemplate>
                <div class="row">
                <div class="col-lg-12" id="placeholder" runat="server">
                </div>
                    </div>
                <asp:DataPager ID="DataPager1" runat="server" PageSize="12"></asp:DataPager>
            </LayoutTemplate>

            <ItemTemplate>
                <div class="col-lg-3">

                    <asp:Image ID="Image1" runat="server" ImageUrl='<%# "emp_img.ashx?code="+ Eval("Code") %>'/>

                </div>
            </ItemTemplate>

        </asp:ListView>



        <asp:ObjectDataSource ID="myteamdata" runat="server" OldValuesParameterFormatString="original_{0}" SelectMethod="get_all_data" TypeName="TimeSheet.DstTableAdapters.EmployeeTableAdapter"></asp:ObjectDataSource>

它没有插入图像,只保留一个网址 enter image description here

那么解决方案是什么解决方案来处理输出来自c#代码中的(bind或Eval)数据绑定,以及如何调用方法在某些类中进行一些计算到ASP页面中使用数据绑定结果作为该方法的输入

非常感谢你提前帮助

1 个答案:

答案 0 :(得分:1)

您的图片处理程序返回的是一个字符串,

   byte[] bytes = emp.Data;
   string base64String = Convert.ToBase64String(bytes, 0, bytes.Length);
   output_img = "data:image/png;base64," + base64String;

img可以显示的是真正的二进制文件/数据

将您的内容类型更改为

context.Response.ContentType = "image/png";
context.Response.BinaryWrite(emp.Data);

并按原样发送您的数据。

你有更多的错误,你的不存在的图像必须是磁盘上的图像文件...我不知道还有什么... foreach返回图像也不好如果你发现更多比一个图像...