0

我想返回一个动态创建的图像,而不是从数据库或文件中检索。假设我有一个简单的 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);
    }
...
4

1 回答 1

0

我不了解您展示 MVC Contoller 的地方。我在那里遗漏了什么吗?但是对于 Webapi (ApiController) 你可以重写你的方法如下。这应该在一个响应中传递整个对象。

 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 和 content-type。我找到了一个链接,可以帮助您使用 Webapi 处理该图像。浏览整个线程。您可能会很快弄清楚缺少什么...

于 2013-02-13T15:41:18.910 回答