MVC 6改变返回内容类型
本文关键字:类型 返回 改变 MVC | 更新日期: 2023-09-27 18:16:12
我似乎无法在新的Asp.net MVC 6中更改控制器方法的返回内容类型。
我尝试了各种变化:
Context.Response.Headers.Add("Content-type", "text/x-vcard");
在旧的WebApi时代,我可以使用这个,并改变格式化器:
return Request.CreateResponse(HttpStatusCode.OK, data, JsonMediaTypeFormatter.DefaultMediaType);
我可以做类似的MVC 6吗?
可以通过在控制器动作上设置Produces("ResultType")
属性来实现。例如:
[Produces("application/xml")]
public Object Index()
{
return new { Id = 100 };
}
给定结果类型的formatter
将用于转换object
,而不考虑Accept Header
。
但是您需要为响应类型注册一个formatter
。所以如果你想使用"text/x-vcard"
,你必须为此创建一个格式化器。
IOutputFormatter
的类,并在ConfigureServices()
方法的Startup.cs
中注册它,如下所示:
services.Configure<MvcOptions>(options =>
{
options.OutputFormatters.Add(new VCardFormatter());
});
这里有一些额外的资源可以帮助你做到这一点:
MVC 6中的内容协商
ASP中的格式化程序。. NET MVC 6