I have a method, that was written in ASP.net MVC Controller:
[HttpGet]
public void ExportClientsListToCSV()
{
Response.Clear();
Response.ClearHeaders();
Response.ClearContent();
Response.AddHeader("content-disposition", "attachment;filename=Exported_Contacts.csv");
Response.ContentType = "text/csv";
Response.ContentEncoding = Encoding.Unicode;
Response.BinaryWrite(Encoding.Unicode.GetPreamble());
StringWriter sw = new StringWriter();
sw.WriteLine("\"FullName\",\"Position\",\"BranchOffice\",\"PrivateEmail\"");
foreach (var line in db.Persons)
{
sw.WriteLine("\"{0}\",\"{1}\",\"{2}\",\"{3}\"",
line.FullName,
line.Position,
line.BranchOffice,
line.PrivateEmail);
}
Response.Write(sw.ToString());
Response.End();
}
I want to use it in ApiController, but in ApiController there is no member Response. How can I replace it? There is HttpResponseMessage, but I can't do the same thing with it.
Thank you for help!
The following code should be equivalent:
var sw = new StringWriter();
sw.WriteLine("\"FullName\",\"Position\",\"BranchOffice\",\"PrivateEmail\"");
foreach (var line in db.Persons)
{
sw.WriteLine("\"{0}\",\"{1}\",\"{2}\",\"{3}\"",
line.FullName,
line.Position,
line.BranchOffice,
line.PrivateEmail);
}
return new HttpResponseMessage
{
Content = new StringContent(sw.ToString(), Encoding.Unicode)
{
Headers =
{
ContentType = new MediaTypeHeaderValue("text/csv"),
ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = "Exported_Contacts.csv"
}
}
},
StatusCode = HttpStatusCode.OK
};