Подтвердить что ты не робот

Вернуть http 204 "без содержимого" клиенту в ASP.NET MVC2

В приложении ASP.net MVC 2, которое у меня есть, я хочу вернуть ответ 204 No Content на пост-операцию. Текущий мой метод контроллера имеет тип возврата void, но это возвращает ответ клиенту как 200 OK с заголовком Content-Length, установленным на 0. Как я могу сделать ответ в 204?

[HttpPost]
public void DoSomething(string param)
{
    // do some operation with param

    // now I wish to return a 204 no content response to the user 
    // instead of the 200 OK response
}
4b9b3361

Ответ 1

В MVC3 существует класс HttpStatusCodeResult. Вы можете использовать свой собственный для приложения MVC2:

public class HttpStatusCodeResult : ActionResult
{
    private readonly int code;
    public HttpStatusCodeResult(int code)
    {
        this.code = code;
    }

    public override void ExecuteResult(System.Web.Mvc.ControllerContext context)
    {
        context.HttpContext.Response.StatusCode = code;
    }
}

Вам нужно будет изменить свой метод контроллера следующим образом:

[HttpPost]
public ActionResult DoSomething(string param)
{
    // do some operation with param

    // now I wish to return a 204 no content response to the user 
    // instead of the 200 OK response
    return new HttpStatusCodeResult(HttpStatusCode.NoContent);
}