1

Internet Explorer 9 有一些东西会阻止 doPostBack 功能不在我的页面上呈现。如果我切换到兼容模式,页面会重新正确呈现并正常运行。

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

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

有什么方法可以防止 doPostBack 在所有页面上呈现,而我以某种方式为 IE9 设置了该设置?

4

3 回答 3

1

框架中可能有代码决定了这种行为背后的网络浏览器的功能。

添加您自己的 __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);
            }
于 2011-05-16T11:36:41.260 回答
0

实际上,您还需要 EVENTTARGET 和 EVENTARGUMENT 的隐藏字段。我有一个解决方法,但我不知道为什么 IE9 不能很好地与我的网站配合使用。什么会导致这种情况?其他 AutoPostBack 功能也无法正确呈现。onSelectedIndexChanged 没有在 IE9 中重新渲染,我必须在 javascript 中检测它并以这种方式连接它。

于 2011-03-25T17:25:05.077 回答
0

如果您想要自己的回发:

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

}

于 2011-03-24T13:09:10.300 回答