MVC6中的HttpConflict在哪里?

时间:2015-10-16 21:42:06

标签: asp.net-core-mvc

我是一个没有" web东西的C ++家伙"经验,但我的主管要我去学习ASP.NET MVC 6"的方式,因为它是最新的时髦的东西。

我设法获得至少一个教程,但我看不到任何参考,也没有任何文档。我在哪里查找有哪些类和方法?

我目前的问题是我试图弄清楚如何从我的控制器中的Create方法返回409的Http状态。我没有看到HttpConflict方法。我该怎么称呼?

4 个答案:

答案 0 :(得分:6)

使用ASP.NET Core 1.0,您可以使用StatusCode(int statusCode)上提供的Controller方法。

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

  // using the HttpStatusCode enum keeps it a little more readable
  return StatusCode((int) HttpStatusCode.Conflict); 
}

答案 1 :(得分: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();
}

答案 2 :(得分:1)

您正在寻找HttpStatusCode

命名空间

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

你像

一样使用它
public HttpResponseMessage ConflictSample()
{
   return Request.CreateResponse(HttpStatusCode.Conflict, "Conflict");
}

答案 3 :(得分:0)

 public async Task<IActionResult> Foo(string sequenceId)
    {                     
            var response = new ContentResult()
            {
                StatusCode = StatusCodes.Status409Conflict,
                Content = "Order duplicate"
            };
            return response;           
    }

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