MVC6 中的 HttpConflict 在哪里?

Where is the HttpConflict in MVC6?

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

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

我当前的问题是我正在尝试弄清楚如何从我的控制器中的 Create 方法中 return Http 状态 409。我没有看到 HttpConflict 方法。我叫什么?

您正在寻找HttpStatusCode

命名空间

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

你喜欢用它

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

在 ASP MVC 6 中,您可以 return 来自控制器方法的 StatusCodeResult 实例:

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

更好的是,您可以创建自己的 HttpConflictResult class:

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();
}

使用 ASP.NET Core 1.0,您可以使用任何 Controller.

上可用的 StatusCode(int statusCode) 方法
[HttpPost]
public IActionResult Create([FromBody] Widget item)
{
  // ...

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

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