Подтвердить что ты не робот

ASP.Net MVC Controller Действия, которые возвращают void

Если у меня есть следующее действие контроллера...

public void DoSomething()
{
}

будет ли каркас фактически преобразовывать его в это?

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

Ответ 2

Похоже, проверьте исходный код 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;
}

Ответ 3

Он не будет "преобразовывать" его, но оба будут иметь тот же эффект, что и пользователь. Запрос будет отправлен, но ответ не будет возвращен клиенту.

Лично я считаю, что вам нужно отправить какой-либо ответ обратно клиенту, даже если вы просто напишите продолжение или успех непосредственно в потоке ответов. Даже JSON true или пустой XML-документ лучше, чем ничего.