Создание единого контроллера для возврата как данных, так и представлений - PullRequest
2 голосов
/ 07 марта 2012

Я играл с ASP.NET MVC 4 beta и заметил два контроллера: один (контроллер веб-API) для возврата данных и другой (контроллер по умолчанию) для возврата к представлениям.

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

То, чего я пытаюсь добиться, - это наличие одного контроллера, который будет возвращать как представления, так и данные. Но я запутался, это лучший вариант, и если да, то как я могу достичь этого без особого кода.

Могу ли я расширить ApiController таким образом, чтобы он возвращал оба представления, а также данные, или я могу создать универсальный контроллер, который передает запросы определенному типу контроллера на основе "accept-type".

Я ищу ваши ценные предложения.

Ответы [ 2 ]

3 голосов
/ 07 марта 2012

Напишите форматер, отображающий ваш HTML.

1 голос
/ 07 марта 2012

Официальный Пример диспетчера контактов описывает, как использовать средства форматирования для визуализации в любом из следующих html / json / png / vcf в одном контроллере.

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

config.Routes.MapHttpRoute( 
            "Default", // Route name 
            "{controller}/{id}/{ext}", // URL with parameters 
            new { id = RouteParameter.Optional, ext = RouteParameter.Optional } // Parameter defaults 
        );

Но если вы на самом деле устанавливаете заголовок "accept-type", это должно сработать "из коробки"

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