我是一个没有" web东西的C ++家伙"经验,但我的主管要我去学习ASP.NET MVC 6"的方式,因为它是最新的时髦的东西。
我设法获得至少一个教程,但我看不到任何参考,也没有任何文档。我在哪里查找有哪些类和方法?
我目前的问题是我试图弄清楚如何从我的控制器中的Create方法返回409的Http状态。我没有看到HttpConflict方法。我该怎么称呼?
答案 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;
}
我认为这是一种更清洁的方式