ActionResult
— это базовый класс, экземпляр которого возвращает любое действие контроллера в ASP.NET MVC. В MVC существует несколько стандартных реализаций класса ActionResult
: ViewResult, JsonResult, FileResult, RedirectResult, RedirectToRouteResult, ContentResult, EmptyResult
. Их назначение и тип возвращаемых данных перечислены в табл. 4.1.

Когда действие завершает свое выполнение, оно возвращает результат в виде базового класса ActionResult
или его наследников. После этого механизм MVC вызывает у возвращенного результата стандартный метод ExecuteResult
, который и формирует результат, получаемый клиентом.
ViewResult
— это стандартный и самый используемый на практике результат, наследующий тип ActionResult
, который возвращается действиями контроллеров. Назначение ViewResult
— это определение представления, которое будет использовано механизмом MVC для представления состояния модели.
У ViewResult
и базового класса ViewResultBase
, от которого ViewResult
унаследован, есть ряд параметров:
□ ViewData
— хранилище данных модели, которые используются представлением для отображения результата работы действия;
□ TempData
— аналогичное viewData
хранилище данных модели, но с существенным отличием, которое позволяет данным храниться после перенаправления запроса на другое действие;
□ viewName
— имя представления, которое должно отреагировать на изменение модели контроллером. Иными словами, этот параметр указывает механизму MVC, какое представление нужно использовать для отображения результата работы действия;
□ MasterName
— имя master-представления, которое должно быть использовано для отображения результата работы действия;
□ view
— экземпляр представления, которое должно быть использовано для отображения результата работы действия. Может быть использовано вместо параметра viewName
для определения представления.
Обычно для возвращения результата типа viewResult
из действия используется стандартный метод контроллера view
, который принимает те же параметры, что и viewResult
. Рассмотрим пример вызова метода view
:
public ActionResult Select(Guid? userid)
{
MembershipProvider mp = Membership.Provider;
MembershipUser user = mp.GetUser(userId, false);
return view("Select", "Site", user);
}
В приведенном фрагменте действие Select
возвращает результат типа viewResult
, который формируется стандартным методом контроллера view
. В данном случае метод view принимает три параметра: имя представления Select
, имя master-представления Site
и модель данных user
.
JsonResult
— это стандартная возможность механизма MVC возвращать результат на запрос пользователя в виде JSON-данных. JSON — это формат данных, название которого расшифровывается как JavaScript Object Notation или объектная нотация JavaScript. Хотя в названии присутствует слово JavaScript, формат данных JSON языконезависимый и может быть использован при разработке на любом языке.
Примечание
JSON является альтернативой другому формату данных — XML, но по сравнению с XML JSON более короткий, поэтому JSON получил распространение при совместном использовании с механизмом Ajax, когда размер передаваемых данных может иметь большое значение.
*********************************
Класс JsonResult содержит несколько свойств, для более гибкой настройки возвращаемого результата:
□ ContentEncoding
— устанавливает значение HTTP-параметра ContentEncoding
, который определяет кодировку возвращаемого результата;
□ ContentType
— устанавливает значение HTTP-параметра ContentType
, если не указано, то по умолчанию устанавливается в application/json
;
□ Data
— любые данные, которые могут быть сериализованы в формат JSON с помощью класса JavaScriptSerializer
.
Использовать JsonResult
для возвращения результата в виде JSON-данных очень просто, для этого в контроллере существует стандартный метод Json
, который принимает все параметры JsonResult
и возвращает готовый результат. Рассмотрим пример действия для контроллера AdminController
, которое возвращает JSON-данные по запросу с параметром имени пользователя:
public JsonResult SelectUserData(string userName)
{
if (string.IsNullOrEmpty(userName))
throw new HttpException(404, "Пользователь не найден");
MembershipProvider mp = Membership.Provider;
Читать дальше
Конец ознакомительного отрывка
Купить книгу