2010-12-22 10 views
21

En una aplicación MVC 2 de ASP.net que tengo, quiero devolver una respuesta 204 Sin contenido a una operación de publicación. El método actual de mi controlador tiene un tipo de retorno nulo, pero esto devuelve una respuesta al cliente como 200 OK con un encabezado Content-Length puesto a 0. ¿Cómo puedo convertir la respuesta en un 204?Devuelva http 204 "sin contenido" al cliente en ASP.NET MVC2

[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 
} 

Respuesta

29

En MVC3 hay un HttpStatusCodeResult class. Se podría rodar su propia para una aplicación 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; 
    } 
} 

Habría que modificar su método de controlador de este modo:

[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); 
} 
Cuestiones relacionadas