C# Web Api如何在同一响应中同时返回动态创建的图像和文本数据
我想返回一个动态创建的图像,而不是从数据库或文件中检索。假设我有一个简单的ZipCode类。我希望有一个属性可以返回zipcode的图像表示。JSON返回“ZipAsImage”:“System.Drawing.Bitmap”。 是的,我对网络世界的编程还不熟悉。是的,我寻找了其他的例子,但它们似乎只返回一个图像。谢谢你的帮助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
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。