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



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



public void DoSomething()
{
}


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



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

3 ответов:

да

контроллер, который возвращает void будет производить EmptyResult.

принято от

жизнь и времена Ан ASP.NET контроллер MVC

Кажется так, проверьте исходный код ControllerActionInvoker.cs. Я не проверял это, но логика говорит мне, что void return установит 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-документ лучше, чем ничего вообще.

Comments

    Ничего не найдено.