2011-03-23 56 views
1

有一些关于Internet Explorer 9的问题,它阻止了doPostBack功能在我的页面上不呈现。如果我切换到兼容模式,页面会正确重新呈现,并按照其应有的功能进行重新呈现。使用Internet Explorer 9时,页面上不显示ASP.NET doPostBack功能

我已经尝试了添加另一个控件的解决方案,它将使ASP.Net认为我需要一个PostBack并因此呈现控件,但仍然没有这样做。我添加了另一个需要回发的控件(LinkBut​​ton,带有AutoPostback的DDL等),但它仍未呈现在页面上。

我没有使用任何输出缓存,所以我没有那个关闭。

是否有某种方法来防止doPostBack在所有页面上呈现,并且我以某种方式为IE9设置?

+0

你想没有回传的功能? – Tejs 2011-03-23 19:59:01

回答

0

,如果你想让自己的回发:

function postBackForm(targetElementId) { 
var theform = document.forms[0]; 
theform.__EVENTTARGET.value = targetElementId; 
theform.__EVENTARGUMENT.value = ""; 
theform.submit(); 

}

0

其实,你需要EVENTTARGET隐藏字段和EVENTARGUMENT为好。我有一个解决方法,但我不知道为什么IE9不能很好地与我的网站玩。会导致什么?其他AutoPostBack功能也无法正确呈现。 onSelectedIndexChanged不会在IE9中被修改,我必须在javascript中检测它并将其挂钩。

1

框架中可能存在代码,用于确定此行为背后的Web浏览器的功能。

添加您自己的__doPostBack,也许加上这些行:

  if (theForm.__EVENTTARGET == null || theForm.__EVENTARGUMENT == null) { 
       var lmTarget = document.createElement("INPUT"); 
       lmTarget.name = "__EVENTTARGET"; 
       lmTarget.id = "__EVENTTARGET"; 
       lmTarget.type = "hidden"; 


       var lmArgument = document.createElement("INPUT"); 
       lmArgument.name = "__EVENTARGUMENT"; 
       lmArgument.id = "__EVENTARGUMENT"; 
       lmArgument.type = "hidden"; 

       theForm.appendChild(lmTarget); 
       theForm.appendChild(lmArgument); 
      } 
相关问题