我有一个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的值为空......
答案 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);