Retourner http 204 "pas de contenu" au client dans ASP.NET MVC2

Dans un ASP.net MVC 2 app que j'ai je veux retourner a 204 No Content de la réponse à un post opération. La méthode courante de mon controller a un type de retour de vide, mais cela renvoie une réponse au client comme 200 OK avec un en-tête Content-Length réglé à 0. Comment puis-je transformer la réponse en 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
}
22
demandé sur Jeremy Raymond 2010-12-22 23:50:21

2 réponses

dans MVC3 il y a un HttpStatusCodeResult class. Vous pourriez rouler votre propre pour un MVC2 application:

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

vous devez modifier votre méthode de controller comme suit:

[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);
}
30
répondu Scott 2013-12-09 15:06:39

POUR INFO, j'utilise votre approche et il retourne 204 pas de contenu( juste retourner un vide), je pense que vous avez un autre problème

[HttpPost]
public void SetInterests(int userid, [FromBody] JObject bodyParams)
{
     ....
     .....

    //returning nothing
}
0
répondu SoliQuiD 2018-04-08 15:50:27