(Лучшая практика) Как поместить результат JSON в ASP.net MVC Framework? - PullRequest
4 голосов
/ 21 июня 2009

В настоящее время я использую потрясающий Linq 2 Json.net (от newtonsoft), который является очень простым и простым инструментом для генерации результатов JSON программным способом.

Но после завершения некоторых проектов я остановился и переосмыслил, должен ли я генерировать результат JSON в контроллере? Я имею в виду, что в .net MVC framework он предоставляет JSONResult как один из ViewResult. Но должен ли контроллер беспокоиться о том, как генерируется результат? Или он должен просто «предоставить» данные для просмотра, и это должно быть задачей представления для генерации необходимого вывода (и форматирования)?

И последнее, я также слышал, что использование «ViewData» в контроллере может быть не очень хорошей идеей, так как контроллер слишком много касается проблемы отображения / вывода, можно ли использовать какой-либо лучший шаблон или метод?

Ответы [ 3 ]

1 голос
/ 04 июля 2009

Вывод JSON довольно прост с большинством серверных языков, у меня никогда не было причины (или не было возможности оправдать попытки) усложнить их шаблонами.

Пока вы можете, сумма накладных расходов, вероятно, является пустой тратой. В большинстве случаев рендеринг шаблонов запускает всю подсистему, которую нужно свернуть, прежде чем даже приступить к делу.

Вся идея (для меня) о JSON (и об ответах AJAX в целом) заключается в том, что вы можете снизить нагрузку на сервер.

1 голос
/ 05 июля 2009

Я думаю, что буду оправдывать вывод JSON в Controller, поскольку JSON - это просто форма ViewData, такая же вещь, как использование словаря ViewData для взаимодействия со страницами View.

А фактическая страница просмотра уже обработана или обработана языками на стороне клиента. Хотя есть один недостаток, контроллер вывода JSON весьма зависит от представления, да, вы все равно можете изменить представление на другое, которое принимает этот JSON в качестве канала связи, но не очень хорошая идея, если вы хотите изменить клиента. например, настольному приложению, использующему другие каналы в качестве связи (например, прямое соединение TCP, приложение SOAP и т. д.), поскольку контроллер сделан для JSON. (правда, вы можете сделать адаптер для перевода).

Итак, чтобы завершить это, рендеринг JSON в контроллере в порядке, если вы не планируете использовать другую платформу, оставляя контроллер неизменным.

0 голосов
/ 21 июня 2009

Я обычно устанавливаю свои результаты для JsonResults в самом контроллере.Я чувствую, что это зависит от модели / DAL / BLL, чтобы дать мне данные / ienumerable, отфильтрованные в соответствии с запросом, но контроллер / просмотр не отображаются и вернуть егоВ случае, если JsonResult, каркас обрабатывает часть представления / кодирования.Я бы зарезервировал представления для форматированного текстового (в основном html) вывода.Используйте встроенный обработчик / результат для ответов JSON и File / Image.Вывод XML может действительно пойти в любую сторону, imo.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...