В связи с выпуском новой версии генератора отчетов FastReport .NET 2013.2 прошу обратить внимание всех пользователей объекта WebReport на следующие изменения.
Во-первых, изменилось расширение у имени хендлера, который необходимо прописывать в файле web.config для корректной работы WebReport. Старое название «FastReport.Export.aspx» нужно заменить на новое «FastReport.Export.axd». Если этого не сделать, то WebReport вызовет исключение с ошибкой и инструкциями по внесению изменений в файл web.config.
Проверить корректную работу хендлера WebReport можно набрав в адресной строке браузера: http://site_address/app_folder/ FastReport.Export.axd (замените строки site_address и app_folder на свои).
В случае удачного запроса будет выведен номер версии FastReport и текущее серверное время.
Во-вторых, в FastReport .Net 2013.2 добавлена поддержка фреймворка ASP.NET MVC всех версий. С использованием контрола в разметке ASPX (MVC 2) не должно возникнуть никаких сложностей – объект достаточно перетащить на форму из Toolbox, установить свойства и работать с ним как с привычным контролом. Необходимые настройки в файл web.config будут добавлены автоматически. Пример применения WebReport в разметке aspx можно посмотреть в папке \Demos\C#\MvcDemo.
На использовании WebReport в разметке Razor, которая появилась с версии MVC 3 нужно остановиться подробнее. Для корректной работы WebReport нужно добавить в файл web.config в корневой папке веб-приложения определения хендлеров. При использовании сервера IIS7 и выше нужно добавить следующую строку в секцию <system.webServer> <handlers>:
<add name="FastReportHandler" path="FastReport.Export.axd" verb="*" type="FastReport.Web.Handlers.WebExport" />
При использовании IIS6 добавляется строка в секцию <system.web> <httpHandlers>:
<add path="FastReport.Export.axd" verb="*" type="FastReport.Web.Handlers.WebExport" />
Далее нужно внести изменения в файл web.config в папке, где находятся View. В секцию <system.web.webPages.razor> <namespaces> нужно добавить строки:
<add namespace="FastReport" />
<add namespace="FastReport.Web" />
Эти строки необходимы, чтобы можно было создавать объекты FastReport и обращаться к их свойствам непосредственно во View.
В файле _Layout.cshtml в теге <head> добавляем строки:
@WebReportGlobals.Scripts()
@WebReportGlobals.Styles()
Теперь можно переходить к отображению отчета на View. Переходим в соответствующий контроллер и создаем там WebReport:
WebReport webReport = new WebReport(); // создаем объект
webReport.Width = 600; // задаем ширину
webReport.Height = 800; // задаем высоту
webReport.Report.RegisterData(dataSet, "AppData"); // привязка источника данных
webReport.ReportFile = this.Server.MapPath("~/App_Data/report.frx"); // загрузка отчета из файла
ViewBag.WebReport = webReport; // передаем данные во View
В коде View добавляем строку в нужное место:
@ViewBag.WebReport.GetHtml()
Аналогичный код по созданию WebReport можно написать также непосредственно во View.
Пример использования WebReport в разметке Razor находится в папке \Demos\C#\MvcRazor. Там есть различные варианты загрузки отчета, в том числе и заранее подготовленного, а также есть пример использования события StartReport.
Не забудьте добавить в папку bin каждого из примеров недостающие библиотеки.