1

我猜之前有人问过它,但我没有看到它,我想也许我错过了一些基本的东西。我的问题是为什么我不能有一个 API 控制器,它的结果格式基于接受的内容格式(即应用程序/json)?也许我很懒 - 但我宁愿做一些事情,如果 html 是预期的结果格式而不是让我返回一个视图,如果 json 是接受格式而不是我可以返回 JSOn -etc...如果我有两个命名空间,那么也是我必须维护的两种方法 - 当唯一的区别是媒体格式时。

4

1 回答 1

0

当您从 Web api 控制器中的操作返回对象时,幕后实际发生的情况如下所示:

 public class SessionController : ApiController
    {

        public HttpResponseMessage Get(int id)
        {
            var vm = new SessionDetailViewModel {Speaker = "Bob", Title = "Bob's talk"};

            var conneg = new DefaultContentNegotiator();
            var result = conneg.Negotiate(typeof (SessionDetailViewModel), this.Request,Configuration.Formatters);
            var content = new ObjectContent<SessionDetailViewModel>(vm, result.Formatter,result.MediaType);

            return new HttpResponseMessage() {Content = content};
        }
    }

只要您有适当的格式化程序集,可以将返回的对象映射到有线格式,那么 conneg 就会自动发生。

于 2012-12-18T02:42:16.560 回答