ASP.Net MVC Controller Actions that return void

前端 未结 3 608
忘了有多久
忘了有多久 2020-12-03 06:26

If I have the following controller action...

public void DoSomething()
{
}

will the framework actually convert it to this?

         


        
相关标签:
3条回答
  • 2020-12-03 06:49

    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;
    }
    
    0 讨论(0)
  • 2020-12-03 06:54

    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.

    0 讨论(0)
  • 2020-12-03 06:57

    Yes

    A controller that returns void will produce an EmptyResult.

    Taken from

    The Life And Times of an ASP.NET MVC Controller

    0 讨论(0)
提交回复
热议问题