2017-03-15 4 views
1
protected HttpResponseMessage CreatedResponse(string routeName, object routeValues) 
{ 
    var response = Request.CreateResponse(HttpStatusCode.Created); 
    var locationUri = Url.Link(routeName, routeValues); 
    response.Headers.Location = new Uri(locationUri); 

    return response; 
} 

.netコアの同等のコードとは何ですか? それとも回避する方法..あなたはController.Createdメソッドを使用する必要があるが、今、それはまた、URIに関する情報を必要と.netコアのHttpResponseMessage(Request.CreateResponse)を回避するには

おかげ

答えて

1

public IActionResult CreatedResponse(object value) 
{ 
    return this.Created(<string uri>, value); 
    //or 
    return this.Created(<Uri uri>, value); 
} 

実際には、バックグラウンド方法でCreatedResultを作成し、返しますがオブジェクトは、ObjectResultから派生し、LocationValue、およびStatusCodeフィールドを入力します。したがって、代わりにURIを返す必要がない場合は、一般的なObjectResult応答を作成することができます。

public IActionResult CreatedResponse(object value) 
{ 
    return new ObjectResult 
    { 
     Value = value, 
     StatusCode = Microsoft.AspNetCore.Http.StatusCodes.Status201Created // 201 
    }; 
} 
0

私はもう一方の答えに基づいて、拡張メソッドを作成しました。 IActionResultを返す必要があります。

public static class HttpRequestExtensions 
{ 
    public static IActionResult CreateResponse(this HttpRequest request, int status, object content) 
    { 
    return new ObjectResult(content) 
    { 
     StatusCode = status 
    }; 
    } 
} 

、使用中:

public IActionResult Patch(long id, [FromBody]JsonPatchDocument<SomeModel> value) 
{ 
    //other code here for patching logic 

    var response = new { Original = modelBefore, Patched = modelAfter }; 

    return Request.CreateResponse(StatusCodes.Status200OK, response); 

} 
あなたはまだそれを昔ながらの方法をしたいのであれば、あなたはこれをすることができます
関連する問題