Книга: ASP.NET MVC Framework
JsonResult
Разделы на этой странице:
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
— любые данные, которые могут быть сериализованы в формат 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;
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, которому передается набор данных. Результатом, который получит пользователь в ответ, например, на такой запрос http://localhost:5434/Admin/SelectUserData?userName=admin будет текст в следующем формате:
{"UserId":null,"Email":"[email protected]","Comment":"","IsApproved":true, "IsLockedOut":false,"CurrentMembershipUser":null}