Internet Explorer 失去回发值
Internet Explorer loses postback value
我有一个 ASP .Net 网页,它从后面的代码中填充了一个 DropDownList。 DropDownList 的值是 xml 值。它在 Firefox 和 Chrome 中工作,但 IE(IE11) 丢失了值,它只是空的,但仅适用于 DropDownList。其他值(文本框)都很好。
Firefox、Chrome 和 IE 中的回发值处理有何区别?
我用 X 替换了 xml 字符串中的每个字符,它正在工作,IE returns DropDownList 值 "xxxxxxxxxxx..."。我将 xml 字符串替换为 "<>?!/&$'\"(){}[]" 以查看特殊字符是否会产生问题,但即便如此也能奏效。所以我尝试了这种方法:
System.Security.SecurityElement.Escape();
但即便如此,回传值还是空的。
在 Internet Explorer 的 HTML 源代码中,我可以看到每个值,xml 字符串,编码的 xml 字符串,"xxxxxxxxx..." 等。所以 IE 需要值并将其放在 DropDownList 中,但是如果您 select xml 字符串(或编码的 xml 字符串)并执行回发,则 DropDownList 的值为空...
我发现了问题,它与 xml 无关,是 xml 字符串中的换行符。 Internet Explorer 无法处理包含换行符的回发值。
我必须替换 DropDownList 值中的每个换行符,现在它可以工作了!
我将 Environment.NewLine
替换为虚拟值 <NEWLINEDUMMY/>
,在我从 DropDownList 获取回发值后,我反转了替换。
首先:
System.Security.SecurityElement.Escape(xmlstring).Replace(Environment.NewLine, NEWLINEDUMMY);
然后:
HttpUtility.HtmlDecode(postbackvalue).Replace(NEWLINEDUMMY, Environment.NewLine);
我有一个 ASP .Net 网页,它从后面的代码中填充了一个 DropDownList。 DropDownList 的值是 xml 值。它在 Firefox 和 Chrome 中工作,但 IE(IE11) 丢失了值,它只是空的,但仅适用于 DropDownList。其他值(文本框)都很好。
Firefox、Chrome 和 IE 中的回发值处理有何区别?
我用 X 替换了 xml 字符串中的每个字符,它正在工作,IE returns DropDownList 值 "xxxxxxxxxxx..."。我将 xml 字符串替换为 "<>?!/&$'\"(){}[]" 以查看特殊字符是否会产生问题,但即便如此也能奏效。所以我尝试了这种方法:
System.Security.SecurityElement.Escape();
但即便如此,回传值还是空的。
在 Internet Explorer 的 HTML 源代码中,我可以看到每个值,xml 字符串,编码的 xml 字符串,"xxxxxxxxx..." 等。所以 IE 需要值并将其放在 DropDownList 中,但是如果您 select xml 字符串(或编码的 xml 字符串)并执行回发,则 DropDownList 的值为空...
我发现了问题,它与 xml 无关,是 xml 字符串中的换行符。 Internet Explorer 无法处理包含换行符的回发值。
我必须替换 DropDownList 值中的每个换行符,现在它可以工作了!
我将 Environment.NewLine
替换为虚拟值 <NEWLINEDUMMY/>
,在我从 DropDownList 获取回发值后,我反转了替换。
首先:
System.Security.SecurityElement.Escape(xmlstring).Replace(Environment.NewLine, NEWLINEDUMMY);
然后:
HttpUtility.HtmlDecode(postbackvalue).Replace(NEWLINEDUMMY, Environment.NewLine);