Chris Arnold
Chris Arnold

Reputation: 5753

ASP.Net MVC Controller Actions that return void

If I have the following controller action...

public void DoSomething()
{
}

will the framework actually convert it to this?

public EmptyResult DoSomething()
{
  return new EmptyResult();
}

Upvotes: 72

Views: 53738

Answers (3)

Martijn Laarman
Martijn Laarman

Reputation: 13536

Yes

A controller that returns void will produce an EmptyResult.

Taken from

The Life And Times of an ASP.NET MVC Controller

Upvotes: 81

Michael Stum
Michael Stum

Reputation: 181064

Seems so, check the source code of ControllerActionInvoker.cs. I haven't verified it, but logic tells me that a void return will set actionReturnValue to null, so an EmptyResult is generated. This is the most recent source code, haven't checked the source for ASP.net MVC 1.0.

protected virtual ActionResult CreateActionResult(ControllerContext controllerContext, ActionDescriptor actionDescriptor, object actionReturnValue) {
    if (actionReturnValue == null) {
        return new EmptyResult();
    }

    ActionResult actionResult = (actionReturnValue as ActionResult) ??
        new ContentResult { Content = Convert.ToString(actionReturnValue, CultureInfo.InvariantCulture) };
    return actionResult;
}

Upvotes: 3

Jarrett Meyer
Jarrett Meyer

Reputation: 19593

It won't "convert" it, but the two would have the same effect as far as the user is concern. A request would be sent, but no response would come back to the client.

Personally, I think you need to send some response back to the client, even if you just write a continue or success directly to the response stream. Even a JSON true, or an empty XML document is better than nothing at all.

Upvotes: 1

Related Questions