ContentResult и JsonResult

Последнее обновление: 21.03.2022

ContentResult

ContentResult отправляет клиенту ответ в виде строки. Так, следующий пример:

public string Index()
{
    return "Hello METANIT.COM";
}

Можно переписать с использованием ContentResult:

public IActionResult Index()
{
	return Content("Hello METANIT.COM");
}

Для отправки ContentResult не надо использовать конструктор, так как в контроллере уже определен специальный метод Content(), который принимает отправляемую строку и создает объект ContentResult.

JsonResult

Одним из наиболее популярных в наше время форматов хранения и передачи данных является формат JSON (JavaScript Object Notation). JSON не зависит от языка программирования, он более удобен и легче обрабатывается.

В JSON каждый отдельный объект заключается в фигурные скобки и представляет собой набор пар ключ-значение, разделенных запятыми, где ключом является название свойства объекта, а значением соответственно значение этого свойства. Например: {"name":"Tom"}. Здесь "name" является ключом, а "Tom" - значением.

Для отправки объекта в формате json в контроллере имеется метод Json(object obj), который в качестве параметра принимает отправляемый объект. Например:

public JsonResult GetName()
{
    return Json("Tom");
}

В данном случае на сторону клиента отправляется строка "Tom".

Допустим, у нас есть следующий класс User:

record class Person(string Name, int Age);

И тогда для отправки клиенту объекта Person мы можем написать следующий метод:

public IActionResult Index()
{
	Person tom = new Person("Tom", 37);
	return Json(tom);
}

При обращении к методу веб-браузер выведет полное описание объекта в формате json:

Отправка JSON в контроллере ASP.NET Core MVC и C#

Дополнительная версия метода Json() в качестве второго параметра принимает объект, который задает настройки сериализации в формат json. В качестве такого объекта выступает объект типа JsonSerializerOptions:

using Microsoft.AspNetCore.Mvc;

namespace MvcApp.Controllers
{
	public class HomeController : Controller
	{
		public IActionResult Index()
		{
			var tom = new Person("Tom", 37);
			var jsonOptions = new System.Text.Json.JsonSerializerOptions 
			{ 
				PropertyNameCaseInsensitive = true,	// не учитываем регистр
				WriteIndented = true				// отступы для красоты
			};
			return Json(tom, jsonOptions);
		}
	}
	record class Person(string Name, int Age);
}

В данном случае объект JsonSerializerOptions задает с помощью свойств параметры сериализации в json. В частности, значение свойства PropertyNameCaseInsensitive = true говорит, что регистр названий свойств не учитывается. А свойство WriteIndented = true задает установку отступов перед свойствами для более форматированного вывода:

Отправка и настройка сериализации JSON в контроллере ASP.NET Core MVC и C#
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850