我在本文中描述的 Windows 7 上的新 IE 11 中遇到了同样的问题:
基本上,问题是 ASP.NET 4.0 中的浏览器定义文件中存在错误,因此 IE 11 无法正确呈现 __doPostBack 函数。我尝试应用上述文章中描述的修复无济于事;很可能是因为它是为 IE 10 编写的。为了说明问题,我发布了相同文件的浏览器渲染源代码视图:一个来自 IE 10,另一个来自 IE 11。
IE 10:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
</title></head>
<body>
<form name="form1" method="post" action="BrowserTest.aspx" id="form1">
<div>
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTQ1OTQ0MTYyOWRkhppg54D0Mn30nLC/IZTLGlfBr38aeprB3xTAohhbzJQ=" />
</div>
<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>
<script src="/WebResource.axd?d=VkfLtYKVwqSRUzJ5c5unJXsrYfD7JD99cKOnK4EzAlBtmGvv5qOEADPvBEF-Abv4R8XOPCOVzoUKZpOWLoWkLmS5Ko2jc6gP0c0boPwDWlQ1&t=634937341768794884" type="text/javascript"></script>
<div>
<input type="hidden" name="__PREVIOUSPAGE" id="__PREVIOUSPAGE" value="IrJnCf-ARaAvUp2VObKy5G0fSgiunbCJICjf2oeC8yUbPIidn9rC1G7YJWZJWHRXrSiqArylZSjyapyYzouPdDTljHbP4mz-1oB_2NDwvYM1" />
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAgKjhfvoAQKfwImNC7GPbKaBg2kB2yl1LVVULUkU56rARLobB/VGAPlx9gAH" />
</div>
<div>
<a href="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl02", "", false, "", "/", false, true))">LinkButton</a>
</div>
</form>
</body>
</html>
即 11:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
</title></head>
<body>
<form name="form1" method="post" action="/BrowserTest.aspx" id="form1">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTQ1OTQ0MTYyOWRkhppg54D0Mn30nLC/IZTLGlfBr38aeprB3xTAohhbzJQ=" />
<input type="hidden" name="__PREVIOUSPAGE" id="__PREVIOUSPAGE" value="IrJnCf-ARaAvUp2VObKy5G0fSgiunbCJICjf2oeC8yUbPIidn9rC1G7YJWZJWHRXrSiqArylZSjyapyYzouPdDTljHbP4mz-1oB_2NDwvYM1" />
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAgKjhfvoAQKfwImNC7GPbKaBg2kB2yl1LVVULUkU56rARLobB/VGAPlx9gAH" />
<div>
<a href="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl02", "", false, "", "/", false, true))">LinkButton</a>
</div>
</form>
</body>
</html>
有没有其他人遇到过这个问题,或者是否有人碰巧知道微软是否已经发布了修复程序?在本文顶部链接中描述的修复中,基本上创建了一个文件夹(App_Browsers),其中包含 FireFox 和 IE 的定义文件。这是我尝试过的解决方案,希望它也能经受住未来的考验,以解决这种情况。
我还应该补充一点,我们遇到此问题的服务器是 Windows 2003 机器。我们还有一个 2008 盒子作为我们的开发服务器,这不是问题。我们计划在不久的将来更新生产盒,但可能不会在这成为我们的一些用户的问题之前。在类似的帖子中,解决方案是升级到 ASP.NET 4.5,但我认为这不是我们目前准备做的事情,除非这是唯一的选择。在另一篇文章中,显然已经发布了一个修补程序,但它尚未被原始发布者投票或批准为接受的答案,所以这就是为什么我要继续发布这个问题,希望有人有一个确定的答案。