Автоматически останавливать управление изображениями asp.net UrlEncoding параметра ImageUrl - PullRequest
4 голосов
/ 29 мая 2009

По умолчанию элемент управления изображениями asp.net пытается быть полезным и автоматически кодирует все, что установлено для свойства ImageUrl, поэтому:

imgSomething.ImageUrl = "Generator.aspx?x=1&y=2&z=3";

Становится

"Generator.aspx?x=1&y=2&z=3"

Проблема в том, что я хочу передать закодированные в Base64 параметры, которые мне нужно вручную Server.UrlEncode, потому что каждый из них может содержать символ, который в противном случае вызовет проблемы.

Итак, в основном мой вопрос таков: Как отключить автоматический контроль элемента управления изображениями UrlEncoding для параметра ImageUrl?

Ответы [ 2 ]

6 голосов
/ 27 ноября 2009

Я думаю, что вы должны использовать управление сервером. не контролирует asp.

<img ID="Image2" src="" alt="" runat="server" />
Me.Image2.Src = "&&&"

это работает.

2 голосов
/ 29 мая 2009

Мы столкнулись с той же проблемой. Наш обходной путь состоял в том, чтобы упаковать все параметры в один кодированный URLE и Base64 параметр и разделить его самостоятельно на другой стороне. Мы замечаем аналогичный подход в WebResource.axd и ScriptResource.axd.

Быстрый и грязный способ (с использованием простых вспомогательных методов для кодирования / декодирования Base64):

string parameters = args.Join('|');
imgSomething.ImageUrl = "Generator.aspx?d=" + Server.UrlEncode(Base64Encode(parameters));

в Generator.aspx:

string data = Base64Decode(Server.UrlDecode(Request.QueryString["d"].ToString().Trim()));
string[] parameters = data.Split('|');

Если вы хотите использовать строки параметров в стиле строки запроса (то есть x = 1 & y = 2 & z = 3), существует набор примеров кода, который позволит вам перемещаться между строкой и NameValueCollection.

...