Как получить графическое изображение JavaScript с asp.net mvc / C # - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть служба, которая отправляет электронную почту с определенным интервалом, электронная почта основана на шаблонах, где я передаю модель для просмотра и возвращает HTML-строку, она работает нормально. Рендеринг-ASP.NET-MVC-Razor-Views-to-String для HTML и CSS.

enter image description here До сих пор это не происходит автоматически, когда пользователь нажимает кнопку и в этом событии щелчка я сначала сохраняю этот график, а затем выполняю отправку электронной почты с вложением этого сохраненного графика.

 function SaveAllImage() {
     bootbox.confirm("Are you sure you want to send fuel inventory email?<br/>", function (result) {
        if (result) {
            var fuelinventoryInputs = new Array();

            @foreach(var _tank in Tank) {
                <text>
                    var fuelInventoryInput = {};

                    fuelInventoryInput.TankId = @(_tank.Id);
                    fuelInventoryInput.Date = $("#txtEndDate").val();
                    var canvas = $("#DivTankLineGraph_@(_tank.Id) .canvasjs-chart-canvas").get(0);
                    if (canvas != undefined || canvas != null) {
                        var dataURL = canvas.toDataURL('image/png');
                        fuelInventoryInput.GraphImage = dataURL;
                        fuelinventoryInputs.push(fuelInventoryInput);
                    }            
                </text>
            }

            Ajax_CreateEdit_StateChange(1);
            $.ajax({
                type: "POST",
                url: "/FuelInventory/SaveAllImage",
                data: JSON.stringify(fuelinventoryInputs),
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (r) {
                    //Ajax method to send email 
                    SendEmail();
                },
                error: function (e) {
                    Ajax_CreateEdit_StateChange(2);
                    bootbox.alert("Error while sending fuel inventory email.");
                }
            });
        }
    });
}

Теперь мое новое требование состоит в том, чтобы заменить этот ручной процесс, но проблема в том, как интерпретировать этот javascript для создания графика и заставить этот граф присоединиться в Эмиле.

var model = new Tuple<List<Tank>, Dictionary<int, object>>(Tank.ToList(), tankData);
var graph = ViewRenderer.RenderView("~/Views/FuelInventory/GraphForEmail.cshtml", model,null);

Он использует визуализацию ASP.NET MVC и дает мне строку, которая также содержит javascript, но при рендеринге не может интерпретировать и выполнять JavaScript. Выход из ViewRenderer.RenderView в приложении

Выход из того же представления в браузере.enter image description here

Есть ли способ выполнить мое требование.Мне нужно прикрепить тот же график в автоматическом письме.

1 Ответ

0 голосов
/ 15 декабря 2018

Я бы использовал встроенный веб-просмотр.Создайте страницу -> загрузите ее в веб-просмотр -> сохраните содержимое веб-просмотра в виде изображения после его рендеринга.Нечто подобное подойдет.https://cefsharp.github.io

С другой стороны, действительно ли вам нужно использовать код js для генерации этих графиков?Есть много библиотек c #, которые могут сделать любой сюжет в кратчайшие сроки!Есть даже пакеты nuget.

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