Используя MVC Core Action Method, я хочу передать JsonResult в представление. Данные получены из моделей. Каков наилучший способ сделать то же самое? - PullRequest
0 голосов
/ 11 апреля 2020

Метод 1:

Здесь данные, извлеченные из базы данных, преобразуются в Json в классе репозитория и передаются в контроллер

Метод класса репозитория для извлечения данных:

public JsonResult GetEmployee(int Id)
        {
            Employee emp =  this._employeeList.FirstOrDefault(e => e.Id == Id);
            return new JsonResult(emp);
        }

Метод действия в контроллере:

public ViewResult Details()
        {
            JsonResult model = _employeeRepository.GetEmployee(1);
            return View(model);
        }

Метод 2:

Здесь данные, извлеченные из базы данных, преобразуются в Json в классе Controller при соответствующем действии. Метод

Метод класса репозитория для извлечения данных:

public Employee GetEmployee(int Id)
        {
           return this._employeeList.FirstOrDefault(e => e.Id == Id);

        }

Метод действия в контроллере:

public ViewResult Details()
        {
            Employee model = _employeeRepository.GetEmployee(1);
            return View(Json(model));
        }

Какой метод является наилучшим с точки зрения производительности и других параметров?

PS: Я хочу использовать данные json, переданные в View для сценариев Ajax, для отображения вычисленных данных

1 Ответ

0 голосов
/ 11 апреля 2020

Я бы вывел JSON в представление, только если бы мне было нужно, чтобы он был частью ответа html, и в этом случае я сначала сериализовал бы его как строку, и передавал бы его как свойство моей модели. .

Если я также хочу передать те же данные через ajax, я бы написал в свой контроллер вторую функцию, например, Details_ ajax, которая бы возвращала JsonResult и использовала бы return Json (data) для сериализация данных.

В общем, избегание сериализации и десериализации наиболее эффективно, где это возможно.

...