2015-10-16 45 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;   
    } 

我认为这是一个更清洁的方式