Я использую метод FileStreamResult (или FileResult) для отображения диаграммы на странице просмотра бритвы (из действия Controller), и это работает, как и ожидалось.
Однако мне интересно, возможно ли отобразить диаграмму ТОЛЬКО при нажатии на элемент html.
например. Нажмите на элемент, чтобы отобразить диаграмму во всплывающем окне.
Я могу заставить модал отображаться с помощью Jquery ... но ТОЛЬКО если я уже загрузил диаграмму в div.
Я бы хотел, чтобы страница загружалась без графика (из соображений производительности), а затем генерировал / загружал диаграмму только при нажатии.
Полагаю, мне нужен какой-то Ajax-вызов ... но я немного застрял в том, как поступить, и поиск в Google не дал ничего полезного (просто лайтбокс для фотографий)
Псевдокод:
HTML:
<img src='small chart icon.jpg' alt='click me to see chart' id='showchart'/>
<div>
rest of page goes here...
</div>
C #:
public FileStreamResult GetChart(){
//generate any chart
return FileStreamResult(newchartstream, "image/png");
}
JS:
<script>
$(document).ready(function(){
$('#showchart').click(function(){
//make ajax call to generate chart
//show in modal with "close" button
//OR
//open a new page as a modal?
});
});
</script>
EDIT
Пояснение:
Контроллер генерирует ViewModel (из модели EF4), который содержит результаты большого количества вычислений и некоторые строки «итогов» (итоги, средние значения и т. Д.)
Просмотр отображает результаты (ViewModel) в виде таблиц.
Требования:
Нажмите на одну из строк сводки, откроется модальное окно с графиком для этой строки сводки.
Хотел бы избежать отправки идентификаторов параметров для ViewModel и повторной генерации его с нуля (повторные вычисления и т. Д.) По двум причинам
1) Возможно, цифры в фоновой базе данных изменились ... поэтому диаграмма не отражает того, что показано в таблицах.
2) Чтобы выполнить расчеты, требуется время!
Я также хотел бы генерировать диаграмму ТОЛЬКО в случае щелчка по строке, в отличие от постоянной загрузки диаграммы и скрытия () show () с помощью jquery.
Я думал о вызове ajax, но не уверен, как вернуть изображение или как открыть новую страницу.
Не удается найти способ передачи сложной модели в методе Url.Action ().
Считаете ли вы, что кэширование может быть лучшим вариантом, и пусть метод click вызывает «старомодный» javascript для нового окна, передавая параметры для получения объекта из кэша?