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的值是空的…

Internet Explorer失去回发值

我发现了这个问题,它与xml无关,它是xml字符串中的新行。ie浏览器不能处理包含换行符的回发值。我必须替换下拉列表值中的每个换行符,现在它工作了!我用一个虚拟值<NEWLINEDUMMY/>替换Environment.NewLine,在我从下拉列表中获得回发值后,我反转了替换。

首先:

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

然后:

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