Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Web Api如何在同一响应中同时返回动态创建的图像和文本数据_C#_Asp.net Web Api - Fatal编程技术网

C# Web Api如何在同一响应中同时返回动态创建的图像和文本数据

C# Web Api如何在同一响应中同时返回动态创建的图像和文本数据,c#,asp.net-web-api,C#,Asp.net Web Api,我想返回一个动态创建的图像,而不是从数据库或文件中检索。假设我有一个简单的ZipCode类。我希望有一个属性可以返回zipcode的图像表示。JSON返回“ZipAsImage”:“System.Drawing.Bitmap”。 是的,我对网络世界的编程还不熟悉。是的,我寻找了其他的例子,但它们似乎只返回一个图像。谢谢你的帮助 public class ZipCode { public int ZipCodeId { get; set; } [NotMapped] pub

我想返回一个动态创建的图像,而不是从数据库或文件中检索。假设我有一个简单的ZipCode类。我希望有一个属性可以返回zipcode的图像表示。JSON返回“ZipAsImage”:“System.Drawing.Bitmap”。 是的,我对网络世界的编程还不熟悉。是的,我寻找了其他的例子,但它们似乎只返回一个图像。谢谢你的帮助

public class ZipCode
{
    public int ZipCodeId { get; set; }
    [NotMapped]
    public Image ZipAsImage
    {
        get
        {
            // Create a blank iamge for now to test.
            return new Bitmap(50, 50);
        }
        set { }
    }
}
我的ApiController类

public class ZipCodesController : ApiController
{
    private MyContext db = new MyContext();

    // GET api/ZipCodesController
    public IEnumerable<ZipCode> GetZipCodes()
    {
        return db.zipcodes.AsEnumerable();
    }

    // GET api/ZipCodesController/5
    public ZipCode GetZipCode(int id)
    {
        ZipCode zipcode = db.ZipCodes.Find(id);
        if (zipcode == null)
        {
            throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound));
        }

        return zipcode;
    }
...
public class ZipCodesController : Controller
{
    private MyContext db = new MyContext();

    //
    // GET: /ZipCodes/

    public ActionResult Index()
    {
        var zipcodes = db.ZipCodes.Include(z => z.State);
        return View(zipcodes.ToList());
    }

    //
    // GET: /ZipCodes/Details/5

    public ActionResult Details(int id = 0)
    {
        ZipCode zipcode = db.ZipCodes.Find(id);
        if (zipcode == null)
        {
            return HttpNotFound();
        }
        return View(zipcode);
    }
...

我不理解你展示MVC控制器的地方。我是不是遗漏了什么?但是,对于Webapi(ApiController),您可以按如下方式重新编写您的方法。这应该在一个响应中传递enitre对象

 public HttpResponseMessage GetZipCode(int id)
{
    ZipCode zipcode = db.ZipCodes.Find(id);
    if (zipcode == null)
    {
        return Request.CreateResponse(HttpStatusCode.NotFound)
    }

    return Request.CreateResponse(HttpStatusCode.OK,zipcode);
}

发送二进制图像。您需要设置Straemcontent和内容类型。我找到了一个可以帮助你的链接。看穿整条线。您可能会很快发现缺少了什么…

您需要熟悉
System.Drawing
命名空间中的类。如果不想从文件或数据库中获取图像,则必须使用代码绘制图像。然后,您可以从MVC
控制器
ApiController
返回它。您好danludwig,是的,我熟悉绘图,我只是在其中放入一个空白图像进行测试。我的问题是如何返回包含ZipCodeId数据的图像。如何修改GetZipCodes和ActionResult索引例程来实现这一点?谢谢。那么您想在同一个响应中同时返回二进制图像内容和文本数据吗?我的JSON响应文件显示“ZipAsImage”:“System.Drawing.Bitmap”。这当然是字符串表示法。我当前的代码产生相同的结果。如何取而代之的是二进制数据?谢谢。请看我的编辑。我发布了一个链接,可能会有所帮助。也有人建议使用HttpHandler。