如果我有以下控制器动作......
public void DoSomething()
{
}
框架实际上会将其转换为此吗?
public EmptyResult DoSomething()
{
return new EmptyResult();
}
答案 0 :(得分:77)
答案 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文档也总比没有好。