Internet Explorer丢失回发值

时间:2015-09-08 07:36:47

标签: c# asp.net xml internet-explorer postback

我有一个ASP .Net网页,它从后面的代码填充DropDownList。 DropDownList的值是xml值。它在Firefox和Chrome中运行,但IE(IE11)丢失了值,它只是空的但仅适用于DropDownList。其他值(文本框)就好了。

Firefox,Chrome和IE中的回发值处理有什么区别?

我用X替换xml字符串中的每个字符并且它正在工作,IE返回DropDownList值" xxxxxxxxxxx ..."。我用"<>?!/& $' \"(){} []"替换了xml字符串。看一个特殊角色是否会出问题,但即便如此。所以我尝试了这种方法:

System.Security.SecurityElement.Escape();

但即便如此,回发值仍为空。

在Internet Explorer的HTML源代码中,我可以看到每个值,xml字符串,编码的xml字符串," xxxxxxxxx ..."所以IE获取值并将其放在DropDownList中,但是如果你选择xml字符串(或编码的xml字符串)并进行回发,则DropDownList的值为空......

1 个答案:

答案 0 :(得分:1)

我发现了这个问题,它与xml无关,它是xml字符串中的NewLine。 Internet Explorer无法处理包含NewLines的回发值。 我必须替换DropDownList值中的每个NewLine,现在它正在工作! 我用虚拟值Environment.NewLine替换<NEWLINEDUMMY/>,在我从DropDownList获取回发值后,我反向替换。

首先:

System.Security.SecurityElement.Escape(xmlstring).Replace(Environment.NewLine, NEWLINEDUMMY);

然后:

HttpUtility.HtmlDecode(postbackvalue).Replace(NEWLINEDUMMY, Environment.NewLine);