ASP.Net MVC控制器返回void的操作

如果我有以下控制器操作…

public void DoSomething() { } 

框架会把它转换成这个吗?

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

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

取自

ASP.NET MVC控制器的生命和时代

似乎是这样,请检查ControllerActionInvoker.cs的源代码 。 我没有validation它,但逻辑告诉我,一个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; } 

它不会“转换”它,但就用户而言,这两者的效果相同。 一个请求会被发送,但没有回应会回到客户端。

就个人而言,我认为您需要向客户端发回一些响应,即使您只是直接向响应stream写入continue或success。 即使是一个JSON true ,或者一个空的XML文档总比什么都没有好。