1

このコードを使用する前は、idプロパティのみを持つ任意のjsonオブジェクトを返していました。HttpResponseMessageがサポートされておらず、Newtonsofts JSON.NETを使用しているので、これをWebApiの新しいRCバージョンに変換するにはどうすればよいですか?

public HttpResponseMessage<JsonValue> Post(MyModel model)
{
            var id = _theService.AddEntity(model);
            dynamic okResponse = new JsonObject();
            okResponse["id"] = id;
            return new CreateResponse<JsonValue>(okResponse);
}

と...

public class CreateResponse<T> : ResponseBase<T>
    {
        public CreateResponse()
            : base(HttpStatusCode.Created)
        {
        }

        public CreateResponse(T resource)
            : base(resource, HttpStatusCode.Created)
        {
        }
    }

 public abstract class ResponseBase<T> : HttpResponseMessage<T>
    {
        protected ResponseBase(HttpStatusCode httpStatusCode)
            : base(httpStatusCode)
        {
        }

        protected ResponseBase(T resource, HttpStatusCode httpStatusCode)
            : base(resource, httpStatusCode)
        {


            if (resource is IApiResource)
            {
                var apiResource = resource as IApiResource;
                var resourceLocation = new ResourceLocation();
                apiResource.SetLocation(resourceLocation);
                Headers.Location = resourceLocation.Location;
            }
        }
    }
4

3 に答える 3

2

Request.CreateResponse(statuscode, content)コントローラ内で使用

于 2012-06-15T14:22:54.413 に答える
2

CreateResponse拡張メソッドは動的変数を受け入れません。

変更してください

dynamic okResponse = new JsonObject();

のようなものに

var okResponse = new JsonObject();

このリンクも参照してください: https ://aspnetwebstack.codeplex.com/discussions/359242

于 2012-06-16T10:52:38.730 に答える
0

たぶん私はあなたの質問に何かが欠けていますが、あなたはこれを行うことができます:

public dynamic Post(MyModel model)
{
            var id = _theService.AddEntity(model);


            return new { id = id };
}

編集:クライアントがContent-typeをapplication/jsonに設定すると仮定します

于 2012-06-16T01:11:50.383 に答える