Internet Explorer失去回发值
本文关键字:失去 Explorer Internet | 更新日期: 2023-09-27 18:11:43
我有一个asp.net网页,它从后面的代码填充下拉列表。下拉列表的值是一个xml值。它在Firefox和Chrome中工作,但IE(IE11)失去了这个值,它只是空的,但只用于下拉列表。其他值(文本框)就可以了。
Firefox, Chrome和IE中回发值处理的区别是什么?
我用X替换了xml字符串中的每个字符,它正在工作,IE返回下拉列表值"xxxxxxxxxxx…"。我将xml字符串替换为"<>?!/&$''"(){}[]",以查看特殊字符是否会产生问题,但即使这样也可以工作。所以我尝试了这个方法:
System.Security.SecurityElement.Escape();
但是即使这样,回发值也是空的。
在Internet Explorer的HTML源代码中,我可以看到每个值,xml字符串,编码的xml字符串,"xxxxxxxxx…"等。所以IE接受这个值并把它放在DropDownList中,但是如果你选择xml字符串(或编码的xml字符串)并做回发,DropDownList的值是空的…
我发现了这个问题,它与xml无关,它是xml字符串中的新行。ie浏览器不能处理包含换行符的回发值。我必须替换下拉列表值中的每个换行符,现在它工作了!我用一个虚拟值<NEWLINEDUMMY/>
替换Environment.NewLine
,在我从下拉列表中获得回发值后,我反转了替换。
首先:
System.Security.SecurityElement.Escape(xmlstring).Replace(Environment.NewLine, NEWLINEDUMMY);
然后:
HttpUtility.HtmlDecode(postbackvalue).Replace(NEWLINEDUMMY, Environment.NewLine);