ASP.Net MVC Controller返回void的操作

时间:2010-01-12 11:50:23

标签: asp.net asp.net-mvc

如果我有以下控制器动作......

public void DoSomething()
{
}

框架实际上会将其转换为此吗?

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

3 个答案:

答案 0 :(得分:77)

  

返回void的控制器将产生EmptyResult。

取自

The Life And Times of an ASP.NET MVC Controller

答案 1 :(得分:3)

似乎是这样,请检查source code of ControllerActionInvoker.cs。我还没有验证它,但是逻辑告诉我void返回会将actionReturnValue设置为null,因此会生成EmptyResult。这是最新的源代码,尚未检查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;
}

答案 2 :(得分:1)

它不会“转换”它,但就用户而言,这两者会产生相同的效果。将发送请求,但不会回复客户端。

就个人而言,我认为您需要向客户端发送一些回复,即使您只是直接向响应流写入继续或成功。即使是JSON true,或者空XML文档也总比没有好。