автоматическое создание изображений в ASP.NET MVC 3 - PullRequest
2 голосов
/ 31 октября 2011

Я использую 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), это из соображений безопасности и его будет слишком сложно изменить прямо сейчас.

В любом случае мне кажется, что я работаю против фреймворка, а не с ним. Любые идеи кто-нибудь?

Спасибо!

1 Ответ

2 голосов
/ 31 октября 2011

Не рекомендуется передавать сложные объекты в URL-адресе.

Вместо этого сохранять их в сеансе, передавать идентификатор объекта в сеансе в URL-адресе и считывать его из сеанса.в действии.

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