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

Pet*_*ger 4 c# asp.net encoding user-controls

默认情况下,asp.net图像控件有用并自动编码设置为ImageUrl属性的任何内容,因此:

imgSomething.ImageUrl = "Generator.aspx?x=1&y=2&z=3";
Run Code Online (Sandbox Code Playgroud)

"Generator.aspx?x=1&y=2&z=3"
Run Code Online (Sandbox Code Playgroud)

问题是我想传递Base64编码的参数,我需要手动编写Server.UrlEncode,因为每个参数都可以包含否则会导致问题的字符.

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

use*_*826 6

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

<img ID="Image2" src="" alt="" runat="server" />
Me.Image2.Src = "&&&"
Run Code Online (Sandbox Code Playgroud)

有用.


ult*_*ity 2

我们遇到了同样的问题。我们的解决方法是将所有参数打包到一个 URLEncoded 和 Base64 编码的参数中,然后我们自己将其拆分到另一侧。我们在 WebResource.axd 和 ScriptResource.axd 中注意到类似的方法。

快速而肮脏的方法(使用简单的辅助方法进行 Base64 编码/解码):

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

在 Generator.aspx 中:

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

如果您想使用查询字符串样式的参数字符串(即 x=1&y=2&z=3),有一堆示例代码可以让您在字符串和 NameValueCollection 之间移动。