Я использую ASP.Net с MVC 3 и пытаюсь автоматически генерировать изображения. На мой взгляд, я, вероятно, собираюсь сгенерировать что-нибудь от 1 до 50 изображений (может быть, в конечном итоге), которые в настоящее время представляют собой одноразовые изображения. Это потому, что они показывают текущие результаты моих данных, которые обновляются довольно часто, и поэтому на сгенерированные изображения нельзя полагаться очень долго.
В настоящее время я отображаю результаты на лету. Пользователи могут выбирать, какие результаты просматривать и как я получу результаты, записать графики в файл, затем выбрать имена файлов и отобразить их в моем представлении, но это не очень хорошо работает, так как я не использую изображения повторно. Я просто предпочел бы вообще не хранить их.
Пока мое решение основано на следующей идее Может ли контроллер ASP.NET MVC вернуть изображение? .
В моем контроллере у меня есть:
* * 1010
и затем в файле .cshtml:
foreach (var item in @Model.GraphDataList)
{
<img src="@Url.Action("GetImage", "Download", new { GraphData = item})" alt="" />
}
и модель:
public class GraphData
{
public IEnumerable<ResultItem> ResultItems { get; set; }
public ResultDisplaySetup ResultDisplaySetup { get; set; }
public IEnumerable<ResultCutOff> ResultCutOffs { get; set; }
}
но, как вы, наверное, догадались по этому вопросу, это не работает.
Если я сделаю следующее в моем .cshtml / view:
Html.RenderAction("GetImage", "Download", new { GraphData = filename });
Затем я без проблем забираю объект в своем действии контроллера, однако не могу использовать его в теге img, и нулевая модель ASP.NET MVC, переданная действию контроллера, сообщает мне @ Url.Action не может отправлять сложные объекты.
Я потерпел неудачу в попытках сгенерировать сериализованные объекты сам и написать свой собственный построитель URL-адресов, используя RouteValueDictionary и tagbuilder, что, вероятно, возможно. Примером является:
Передача объекта в атрибуты HTML
но этот пример слишком прост и, очевидно, так что я не могу заставить эту работу работать.
У меня есть дополнительное осложнение, заключающееся в том, что, вероятно, действие Html.RenderAction не будет работать на опубликованном веб-сайте, поскольку оно не находится в корне веб-сайта (например, / what / MyWebSite), это из соображений безопасности и его будет слишком сложно изменить прямо сейчас.
В любом случае мне кажется, что я работаю против фреймворка, а не с ним. Любые идеи кто-нибудь?
Спасибо!