1

以前に聞いたことがあると思いますが、見なかったので、根本的なものが欠けているのではないかと思いました。私の質問は、受け入れられたコンテンツ形式(つまり、application / json)に基づいて結果の形式をベースにするAPIコントローラーを1つ持つことができないのはなぜですか?たぶん私は怠け者です-しかし、私はビューを返すよりもhtmlが期待される結果形式である場合、jsonがJSOnを返すことができるよりも受け入れ形式である場合などのようなことをします... 2つの名前空間がある場合、それはまた、私が維持しなければならない2つの方法です。唯一の違いがメディア形式である場合です。

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 に答える