Asp.net mvc framework
Шрифт:
У 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
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 —
Использовать JsonResult для возвращения результата в виде JSON-данных очень просто, для этого в контроллере существует стандартный метод Json, который принимает все параметры JsonResult и возвращает готовый результат. Рассмотрим пример действия для контроллера AdminController, которое возвращает JSON-данные по запросу с параметром имени пользователя:
public JsonResult SelectUserData(string userName)
{
if (string.IsNullOrEmpty(userName))
throw new HttpException(404, "Пользователь не найден");
MembershipProvider mp = Membership.Provider;
MembershipUser user = mp.GetUser(userName, false);
UserData userData = new UserData
{
Comment = user.Comment,
Email = user.Email,
IsApproved = user.IsApproved,
IsLockedOut = user.IsLockedOut
};
return Json(userData, null, Encoding.UTF8);
}
В представленном фрагменте кода для передачи набора данных о пользователе в виде JSON-данных используется единственный метод Json, которому передается набор данных. Результатом, который получит пользователь в ответ, например, на такой запросбудет текст в следующем формате:
{"UserId":null,"Email":"vyunev@live.ru","Comment":"","IsApproved":true, "IsLockedOut":false,"CurrentMembershipUser":null}
FileResult
Очень часто в ответ на запрос пользователя требуется вернуть не HTML-страницу или данные в формате JSON, а какой-нибудь бинарный файл. FileResult — это механизм, который как раз и позволяет возвратить файл как результат работы действия контроллера.
У FileResult есть два важных свойства, которые требуется указывать при возвращении результата действия:
? contentType — свойство, которое задается через конструктор класса FileResult и не может быть изменено напрямую. ContentType указывает MIME-тип содержимого передаваемого файла;
? FileDownloadName — свойство, указывающее на файл, который требуется передать в ответ на запрос.
Рассмотрим использование FileResult на следующем примере. Пусть нам требуется на пользовательский запрос возвращать сопоставленный с пользователем рисунок. Реализуем эту возможность с помощью файловой системы. Для этого создадим в корне проекта папку Admin, в которой будем хранить рисунки пользователей в формате PNG с именем вида: GUID пользователя.рng. Действие GetUserImage контроллера AdminController, которое будет возвращать изображение с помощью FileResult, представлено в следующем фрагменте:
Перекресток судеб
6. Нед
Фантастика:
фэнтези
рейтинг книги
Том 38. Полное собрание сочинений.
Проза:
классическая проза
рейтинг книги
Вернувшийся: Посол. Том IV
4. Вернувшийся
Фантастика:
космическая фантастика
киберпанк
рейтинг книги
Буря мечей
Фантастика:
фэнтези
рейтинг книги
Имперская трилогия (Трилогия)
82. В одном томе
Фантастика:
боевая фантастика
рейтинг книги
Тьма в бутылке
3. Карл Мёрк и отдел «Q»
Детективы:
полицейские детективы
рейтинг книги
"Фантастика 2025-25". Компиляция. Книги 1-24
Фантастика 2025. Компиляция
Фантастика:
боевая фантастика
попаданцы
фэнтези
рейтинг книги
Риф яркости
4. Возвышение
Фантастика:
научная фантастика
рейтинг книги
Франкенштейн: Антология
1. Лучшее
Фантастика:
социально-философская фантастика
научная фантастика
ужасы и мистика
рейтинг книги
Собрание сочинений
Детские:
прочая детская литература
рейтинг книги