Ответ 1
Да
Контроллер, который возвращает void, создаст EmptyResult.
Взято из
Если у меня есть следующее действие контроллера...
public void DoSomething()
{
}
будет ли каркас фактически преобразовывать его в это?
public EmptyResult DoSomething()
{
return new EmptyResult();
}
Да
Контроллер, который возвращает void, создаст EmptyResult.
Взято из
Похоже, проверьте исходный код 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;
}
Он не будет "преобразовывать" его, но оба будут иметь тот же эффект, что и пользователь. Запрос будет отправлен, но ответ не будет возвращен клиенту.
Лично я считаю, что вам нужно отправить какой-либо ответ обратно клиенту, даже если вы просто напишите продолжение или успех непосредственно в потоке ответов. Даже JSON true
или пустой XML-документ лучше, чем ничего.