C# 返回http 204";“无内容”;到ASP.NET MVC2中的客户端

C# 返回http 204";“无内容”;到ASP.NET MVC2中的客户端,c#,asp.net-mvc-2,httpresponse,C#,Asp.net Mvc 2,Httpresponse,在我拥有的ASP.net MVC 2应用程序中,我希望对post操作返回204无内容响应。当前的my controller方法有一个void返回类型,但这会以200 OK的形式向客户端发送一个响应,内容长度头设置为0。我如何将响应转换为一个204 [HttpPost] public void DoSomething(string param) { // do some operation with param // now I wish to return a 204 no c

在我拥有的ASP.net MVC 2应用程序中,我希望对post操作返回204无内容响应。当前的my controller方法有一个void返回类型,但这会以200 OK的形式向客户端发送一个响应,内容长度头设置为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
}
在MVC3中,存在一个。您可以自行开发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);
}

仅供参考,我正在使用您的方法,它返回204个无内容(只返回一个空白),我认为您还有另一个问题

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

    //returning nothing
}

在ASP.NET Core 2中,您可以使用
NoContent

[HttpPost("Update")]
public async Task<IActionResult> DoSomething(object parameters)
{
    return NoContent();
}
[HttpPost(“更新”)]
公共异步任务DoSomething(对象参数)
{
返回NoContent();
}

您只需返回IHttpActionResult并使用
状态码即可:

public IHttpActionResult DoSomething()
{
    //do something

    return StatusCode(System.Net.HttpStatusCode.NoContent);        
}

您确定您使用的是MVC而不是WebAPI吗?WebAPI@SlimShaggyin Web API void方法返回204,但在MVC中返回200。如何传递错误?比如如果(某物)返回400,否则返回204