ASP.Net ApiController如何替换Controller.Response
ASP.Net ApiController how replace Controller.Response
我有一个方法,它是用 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();
}
我想在ApiController中使用它,但是在ApiController中没有成员Response.我该如何更换它?有 HttpResponseMessage,但我不能用它做同样的事情。
谢谢你的帮助!
下面的代码应该是等价的:
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
};
我有一个方法,它是用 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();
}
我想在ApiController中使用它,但是在ApiController中没有成员Response.我该如何更换它?有 HttpResponseMessage,但我不能用它做同样的事情。
谢谢你的帮助!
下面的代码应该是等价的:
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
};