2009-05-29 37 views
4

默认情况下,asp.net图像控制改掉是有帮助的,并自动编码任何设置ImageUrl属性,所以:停止asp.net图像控制自动URL编码的参数的ImageUrl

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

变为

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

问题是我想通过Base64编码的参数,我需要手动Server.UrlEncode因为每个人都可以包含charater,否则会导致问题。

所以基本上我的问题是:我该如何停止图像控制自动UrlEncoding我设置为ImageUrl参数?

回答

2

我们遇到了同样的问题。我们的解决方法是将所有参数打包成一个URLEncoded和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之间移动。

6

我认为你应该使用服务器控制。不是asp控制。

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

它的工作原理。

+1

好主意! :)这从来没有超过我的想法 – 2009-12-04 10:31:08