Страница 1 из 1

Как узнать, с каким отчетом мы работаем в MVC дизайнере?

Добавлено: 11 мар 2015, 17:17
DmitryRu
Страница для построения/редактирования шаблонов отчетов (файл .cshtml) в приложении будет одна.
В зависимости от передаваемого параметра будет загружаться шаблон отчета и отрисовываться.
Параметр будет передаваться в виде настройки роутинга на уровне web-приложения, примерно так:

Код: Выделить всё

~/Reports/ReportId


Таким образом, в контроллере, при первоначальном запросе отчета мы знаем какой отчет запросил пользователь.

Однако, во все обработчики событий у класса StiMvcMobileDesignerOptions не передаются никакие параметры.
Вроде как предполагается, что надо использовать метод:

Код: Выделить всё

            StiReport report = StiMvcMobileDesigner.GetReportObject(HttpContext);
Однако, есть информация, что этот метод может вернуть null
http://forumru.stimulsoft.com/viewtopic ... ect#p12413
Хотелось бы понять, как в таком случае понять, для какого же именно отчета был вызван Action, ибо предложенный по ссылке метод не работает, у класса StiMvcMobileDesigner
нет метода, аналогичного

Код: Выделить всё

StiMvcViewer.GetRouteValues(this.HttpContext)

Re: Как узнать, с каким отчетом мы работаем в MVC дизайнере?

Добавлено: 12 мар 2015, 13:48
Vladimir
Здравствуйте,

Пожалуйста уточните, какую версию продукта вы используете? В последнем релизе 2014.3 доступен указанный метод:

Код: Выделить всё

StiMvcDesigner.GetRouteValues();
Спасибо.

Re: Как узнать, с каким отчетом мы работаем в MVC дизайнере?

Добавлено: 12 мар 2015, 14:34
DmitryRu
Продукт 2014.3, но речь о StiMvcMobileDesigner.
Задача состоит в том, чтобы пользователь мог редактировать отчеты онлайн, без Flash.
Одна страница сайта должна позволять редактировать любой отчет, поставляемый с приложением.

Re: Как узнать, с каким отчетом мы работаем в MVC дизайнере?

Добавлено: 12 мар 2015, 15:21
Vladimir
Здравствуйте,

Данный метод будет добавлен для MvcMobileDesigner в следующем пререлиз билде на этой неделе.

Спасибо.

Re: Как узнать, с каким отчетом мы работаем в MVC дизайнере?

Добавлено: 17 мар 2015, 10:59
DmitryRu
Эксперимент показал, что обсуждаемый метод, в общем-то не нужен.
Оказывается, и HTML5 MVC MvcMobileDesigner, и Flash MVC StiMvcDesigner умеют работать с параметрами Action-методов.
Т.е. можно разместить редактор по адресу:

Код: Выделить всё

http://localhost/StimulSoft/Html/2
где:
  • StimulSoft - контроллер редактирования отчетов
    Html - action метод, который возвращает View с HTML5 MVC редактором
    2 - идентификатор отчета
После этого редактор обращается к своим коллбэкам, передавая им этот параметр, идентификатор отчета, например, для запроса шаблона отчета написан метод:

Код: Выделить всё

        
public ActionResult GetReportTemplateHtml(int? id)
        {
            var report = LoadReportById(id);
            return StiMvcMobileDesigner.GetReportTemplateResult(HttpContext, report);
        }
и он вызывается из браузера так:

Код: Выделить всё

http://localhost/StimulSoft/GetReportTemplateHtml/2
Отсюда вопрос номер 1) Это недокументированная фича, баг, или я плохо искал в документации?

Вопрос 2, HTML5 MVC редактор при инициализации делает кучу запросов вида
http://localhost/WebResource.axd?d=-Nk-OhXXXXXXXXXX
Есть ли возможность как-то уменьшить количество этих запросов?

Вопрос 3, также, делается какой-то непонятный запрос по адресу undefined, что это может быть?
Т.е. сначала делается запрос начального .cshtml файла:

Код: Выделить всё

@using Stimulsoft.Report.MvcMobile;
@{
    Layout = null;
    ViewBag.Title = "Home Page";
}
<!doctype html>

<html lang="en">
    <head>
        @Html.Stimulsoft().RenderMvcMobileDesignerScripts()
        <title>Стимул софт HTML</title>
        <meta name="description" content="Пример стимулсофта">
        <meta name="author" content="Дима">
    </head>

    <body>
        <h2>Некое сообщение</h2>
        <br />
@Html.Stimulsoft().StiMvcMobileDesigner(
    "MvcMobileDesigner1",
    new StiMvcMobileDesignerOptions
    {
        ActionGetReportTemplate = "GetReportTemplateHtml"
        ,ActionGetReportSnapshot = "GetReportSnapshotHtml"
        , ActionSaveReportTemplate = "SaveReportTemplateHtml"
        , ActionDesignerEvent = "DesignerEventHtml"
        , ShowFileMenuNew = false
        , ShowFileMenuExit = false
        , ShowClone = false
        , Localization = "~/Reporting/Localization/ru.xml"
    })
    </body>
</html>
потом делается запрос этого непонятного undefined, потом идет запрос "SaveReportTemplateHtml"
В терминах HTTP запросы такие:

Код: Выделить всё

http://localhost:17777/ES/Stimul/Html/2
http://localhost:17777/ES/Stimul/Html/undefined
http://localhost:17777/ES/Stimul/GetReportTemplateHtml/2
Версия библиотек стимул софт - 2014.3

Re: Как узнать, с каким отчетом мы работаем в MVC дизайнере?

Добавлено: 17 мар 2015, 12:11
DmitryRu
Да, этот же запрос, по адресу undefined, делает ваше демо-приложение, из каталога HTML5\Using designer, Razor
Браузер - Firefox 35, Windows 7

Re: Как узнать, с каким отчетом мы работаем в MVC дизайнере?

Добавлено: 17 мар 2015, 15:10
Vladimir
Здравствуйте,
1) Это недокументированная фича, баг, или я плохо искал в документации?
Скорее это недокументированная фича. При запросе на сервер, меняется только имя действия, остальной URL остаётся без изменений. Все возможности MVC должны быть применимы к нашим компонентам.

Вопрос 2, HTML5 MVC редактор при инициализации делает кучу запросов вида
http://localhost/WebResource.axd?d=-Nk-OhXXXXXXXXXX
Есть ли возможность как-то уменьшить количество этих запросов?
В данный момент возможности убрать такие запросы нет. Эти запросы являются ссылками на ресурсу приложения (скрипты, стили и т.п.). В новых версиях MvcViewer схема работы с ресурсами уже переделана, таких запросов нет. MvcDesigner стоит в очереди на оптимизацию, в следующих версиях работа с ресурсами будет оптимизирована.

Вопрос 3, также, делается какой-то непонятный запрос по адресу undefined, что это может быть?
Это ошибка. Будет исправлено в следующем пререлиз билде на этой неделе. Некоторые ресурсы были перемещены или удалены, старые ссылки остались.


Спасибо.

Re: Как узнать, с каким отчетом мы работаем в MVC дизайнере?

Добавлено: 17 мар 2015, 15:58
DmitryRu
Vladimir писал(а):Здравствуйте,
1) Это недокументированная фича, баг, или я плохо искал в документации?
Скорее это недокументированная фича. При запросе на сервер, меняется только имя действия, остальной URL остаётся без изменений. Все возможности MVC должны быть применимы к нашим компонентам.
Было бы очень хорошо, если бы эта недокументированная фича стала официальной, и что важно, документированной фичей.
Потому что, на мой взгляд, она гораздо проще в понимании и удобнее предлагаемого

Код: Выделить всё

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

Re: Как узнать, с каким отчетом мы работаем в MVC дизайнере?

Добавлено: 18 мар 2015, 16:44
Vladimir
Здравствуйте,

Мы постоянно обновляем нашу документацию.
Скорее всего, описание появится в следующем релизе нашего продукта.

Спасибо.