2015-10-16 47 views
3

我是一個沒有「web stuff」經驗的C++人,但是我的主管想讓我去學習「ASP.NET MVC 6」的方法,因爲它是最新的時髦的東西。MVC6中的HttpConflict在哪裏?

我設法弄到至少一個教程,但我看不到任何地方的參考和文檔。我在哪裏查找哪些類和方法?

我目前的問題是,我想弄清楚如何從我的控制器中的Create方法返回409的Http狀態。我沒有看到HttpConflict方法。我打電話給什麼?

回答

5

在ASP MVC 6,你可以從你的控制器方法返回StatusCodeResult的一個實例:

public IActionResult ConflictAction() 
{ 
    return new StatusCodeResult(StatusCodes.Status409Conflict); 
} 

更重要的是,你可以創建自己的HttpConflictResult類:

public class HttpConflictResult : StatusCodeResult 
{ 
    public HttpConflictResult() : base(StatusCodes.Status409Conflict) 
    { 
    } 
} 

public IActionResult ConflictAction() 
{ 
    return new HttpConflictResult(); 
} 

如果你想知道,這些結果類型只是設置響應的StatusCode屬性,所以下面就等同於以上基於StatusCodeResult 2點的方法:

public IActionResult ConflictAction() 
{ 
    Response.StatusCode = StatusCodes.Status409Conflict; 
    return new EmptyResult(); 
} 
+0

這是HttpStatusCodeResult方法在哪裏?你給的鏈接已經死了,我無法在圖書館找到它。 –

+0

它被重命名爲'StatusCodeResult'。我剛剛更新了答案和鏈接 –

1

您正在尋找HttpStatusCode

命名空間

using System.Net.Http; 
using System.Web.Http; 

您可以使用它像

public HttpResponseMessage ConflictSample() 
{ 
    return Request.CreateResponse(HttpStatusCode.Conflict, "Conflict"); 
} 
+0

請求 - 這到底是什麼呢? – Maverick

+1

@Maverick我更新了答案。 – BrunoMartinsPro

+1

謝謝:)。值得注意的是,你還需要Microsoft.AspNet.Mvc.WebApiCompatShim的參考;) – Maverick

3

在ASP.NET核心1.0可以使用任何可用的ControllerStatusCode(int statusCode)方法。

[HttpPost] 
public IActionResult Create([FromBody] Widget item) 
{ 
    // ... 

    // using the HttpStatusCode enum keeps it a little more readable 
    return StatusCode((int) HttpStatusCode.Conflict); 
} 
0
public async Task<IActionResult> Foo(string sequenceId) 
    {      
      var response = new ContentResult() 
      { 
       StatusCode = StatusCodes.Status409Conflict, 
       Content = "Order duplicate" 
      }; 
      return response;   
    } 

我認爲這是一個更清潔的方式