Вы будете знать, что обычный ReportViewer не поддерживает MVC (если когда-либо было занижение ...)
Мой подход заключается в прямом использовании службы «Выполнение отчета» (https: ///reportserver/ReportExecution2005.asmx).
Основные шаги:
- Вход на сервер отчетов методом .LogonUser
- Загрузить отчет с помощью метода .LoadReport
- Установить свойство .ExecutionHeader для нового объекта ExecutionHeader
- Создание любых параметров и их установка с использованием метода .SetExecutionParameters
- Визуализация отчета с использованием метода .Render
- Получение HTML-содержимого отчета с использованием соответствующей кодировки (которую вы получите из метода .Render)
Я заключил этот лот в действие контроллера, которое возвращает Content ActionResult, содержащий отчет.
Вам придется отказаться от большинства богатых интерактивных функций, так как они не очень хорошо играют (или вы можете разобраться, почему).
Однако сейчас я перехожу к SQL Azure Reporting Services. Для моего приложения я обнаружил, что оно слишком медленное и ограниченное. SQL Azure прекратит выполнение запроса, который занимает более минуты, и в моем случае (в основном из-за сложности базовых запросов) многие мои отчеты постоянно теряют время ожидания.
Ваш пробег, конечно, может отличаться.