默认情况下,asp.net图像控件有用并自动编码设置为ImageUrl属性的任何内容,因此:
imgSomething.ImageUrl = "Generator.aspx?x=1&y=2&z=3";
变为
"Generator.aspx?x=1&y=2&z=3"
问题是我想传递Base64编码的参数,我需要手动编写Server.UrlEncode,因为每个参数都可以包含否则会导致问题的字符。
基本上我的问题是:如何停止Image控件自动UrlEncoding我设置的ImageUrl参数?
答案 0 :(得分:6)
我认为你应该使用服务器控件。不是asp控制。
<img ID="Image2" src="" alt="" runat="server" />
Me.Image2.Src = "&&&"
它有效。
答案 1 :(得分: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('|');
如果你想使用querystring风格的参数字符串(即x = 1&amp; y = 2&amp; z = 3),那里有一堆示例代码可以让你在字符串和NameValueCollection之间移动。 / p>