在.NET MVC中建模绑定Accept头的最简洁方法

Tra*_*vis 6 c# json model-binding asp.net-mvc-3

我正在.NET MVC 3中实现REST层.我正在寻找一种干净的方法来获取Accept标头以确定我是否应该返回Json或Xml.

我也希望能够用一个GET参数来欺骗这个头来进行调试(我希望这也可以坚持生产).

这是我目前正在检测到的方式:

if (Request.AcceptTypes.Contains("application/json") || Request.Url.Query.Contains("application/json"))
Run Code Online (Sandbox Code Playgroud)

这是我的控制器代码中唯一直接触及Request对象的地方.我想要一种更清晰,更可测试的方式来阅读它.我理想的解决方案是控制器上的参数.

我尝试了几个关键字来查看默认的模型绑定器是否会接收它,但我尝试过没有尝试过.

那么获取这些信息的最简洁方法是什么?自定义模型绑定器?你能提供一个例子吗?

And*_*per 2

操作过滤器属性将是一个良好、干净的解决方案。

这里有一个很好的教程:http://www.asp.net/mvc/tutorials/older-versions/controllers-and-routing/understanding-action-filters-cs