原文地址:http://www.sufeinet.com/thread-4564-1-1.html

這個問題我相信有不少人見過,就是使用系統的分頁功能時,或者是使用系統控制元件,都會有一個回發的功能,

這個功能是asp.net自動管理的,就是為了和我們後臺的Cs程式碼連線起來,

但是有時候這個方法並不會生成,正常情況下在頁面的Form下面都會生成如下程式碼

<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>

但是我發現在一些電腦上,也不知道是什麼情況就是沒有這兩個方法,然後就單擊按鈕或者是分頁時就提示如下

這很明顯就是 __doPostBack方法不存在,

我就奇怪了,為什麼呢?

而且在這個電腦上的所有瀏覽器都有一樣,IE678 火狐,Google,等都是同樣的效果。

著實讓人鬱悶,所以來部落格園請教一下大家看看這種問題應該怎麼解決了,

我到是想到一個比較次的方法,只能是在沒有找到解決方案之後應的急

程式碼如下

 <script type="text/javascript">
function SetdoPostBack() {
var html = document.body.innerHTML;
if (html.toLowerCase().indexOf("dopostback") < 0) {
var sb = "<script type=\"text/javascript\">";
sb = sb + "//<![CDATA[";
sb = sb + "var theForm = document.forms['form1'];";
sb = sb + "if (!theForm) {";
sb = sb + " theForm = document.form1;";
sb = sb + "}";
sb = sb + "function __doPostBack(eventTarget, eventArgument) {";
sb = sb + " if (!theForm.onsubmit || (theForm.onsubmit() != false)) {";
sb = sb + " theForm.__EVENTTARGET.value = eventTarget;";
sb = sb + " theForm.__EVENTARGUMENT.value = eventArgument;";
sb = sb + " theForm.submit();";
sb = sb + " }";
sb = sb + "}";
sb = sb + "//]]>";
sb = sb + "<\/script>";
document.write(sb);//大家不要管這個,這只是一個輸出,正常情況下我是新增到一個Div裡的,這裡是為了方便檢視
}
}
setTimeout('SetdoPostBack()', 2000);//2秒之後開始檢查

上面的方法要用的話還需要加上兩個屬性不光是這兩個方法沒有生成,

__VIEWSTATE等幾個hidden控制元件,因為這個是自動生成的。可這些的生成規則實在是不好處理,不過我發現只要VIEWSTATE有的話另外的兩個,只要是生成了,值為Null也不會影響的。

不過這也只是應個急。

還沒有想到更好的辦法。

希望大家幫忙啊。

根據我的分析,會不會是在某些Ip上在運營商或者是什麼地方給遮蔽了一些東西,才使頁面不會生成這個方法的。

如果說是瀏覽器問題那可以排除了,因為我能測試的都測試了,

這問題也不是全部都有,就是有那麼幾個使用者的電腦。

。。。。。。。。

原文地址:http://www.sufeinet.com/thread-4564-1-1.html