自动停止asp.net图像控制UrlEncoding ImageUrl参数

时间:2009-05-29 11:09:23

标签: c# asp.net encoding user-controls

默认情况下,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参数?

2 个答案:

答案 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>

相关问题