2009-05-29 4 views
4

standardmäßig die asp.net Bildsteuerung trys hilfreich sein und kodiert automatisch alles auf die ImageUrl Eigenschaft, so:Stopp asp.net Bildsteuerung automatisch urlencoding den ImageUrl Parameter

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

Wird

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

Das Problem ist, ich möchte Base64 codierte Parameter übergeben, die ich manuell Server.UrlEncode muss, weil jeder charater enthalten kann, die sonst Probleme verursachen.

Also im Grunde ist meine Frage: Wie stoppe ich die Bildsteuerung von automatisch UrlEncoding was ich auf den ImageUrl-Parameter gesetzt?

Antwort

2

Wir stießen auf das gleiche Problem. Unser Workaround bestand darin, alle Parameter in einen URLEncoded- und Base64-codierten Parameter zu packen und auf der anderen Seite aufzuteilen. Ein ähnlicher Ansatz wird in WebResource.axd und ScriptResource.axd festgestellt.

Schnelle und schmutzige Art und Weise (mit einfachen Hilfsmethoden für Base64-Codierung/Decodierung):

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

in generator.aspx:

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

Wenn Sie Parameter Abfragezeichenfolgeflag-Strings verwenden (dh x = 1 & y = 2 & z = 3), gibt es eine Menge Beispielcode, mit dem Sie zwischen einer Zeichenfolge und NameValueCollection wechseln können.

6

Ich denke, Sie sollten die Serversteuerung verwenden. nicht asp Kontrolle.

es funktioniert.

+1

Gute Idee! :) Das ist mir nie in den Sinn gekommen –