日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Sys.WebForms.PageRequestManagerServerErrorException(status code 500 OR 12031)

發布時間:2024/9/5 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Sys.WebForms.PageRequestManagerServerErrorException(status code 500 OR 12031) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們只要在響應Sys.Application的load事件即可,它會在頁面第一次加載時,以及每次Partial Rendering之后被觸發,我們在這時候修改頁面中form元素的action屬性即可,如下:
??
??相應Sys.Application的load事件
??Sys.Application.add_load(function()
??{
?? var form = Sys.WebForms.PageRequestManager.getInstance()._form;
?? form._initialAction = form.action = window.location.href;
??});
??
??  至于為什么應該這樣獲得頁面中的form元素,_initialAction又是什么,以及為什么要設置它,就要牽涉到UpdatePanel的實現方式,在這里就不多作解釋了。只要頁面中放置了這么一小段代碼,這個問題就被解決了。
??
??
??
??深入問題:
??
??  造成這個問題的原因,其實就是因為在Url Rewrite之后,form元素的action并非客戶端請求的地址,而是Url Rewrite的目標地址。如果我們沒有使用Partial Rendering,而是使用了最傳統的PostBack,雖然不會造成頁面功能的破壞,但是在PostBack之后,用戶就會發現地址欄的內容變了,直接變成了目標地址。這可不是我們希望看到的結果,既然Rewrite了,就把它Rewrite到底。當然,我們依然可以使用上面提到的辦法,使用JavaScript來修改form元素的action,但是這個做法實在不夠“美觀大方”,而且用戶從HTML源文件中也可以看到我們Url Rewrite的目標地址,不是嗎?
??
??  如果我們能夠在服務器端設置Form的action就好了,可惜System.Web.UI.HTMLControls.HTMLForm類不允許我們這么做。不過還好,我們用的是ASP.NET,我們用的是面向對象的編程模型。于是我們“繼承”System.Web.UI.HTMLControls.HTMLForm,實現一個自己的Form控件:
??
??繼承HTMLForm類實現自己的From
??namespace ActionlessForm {
?? public class Form : System.Web.UI.HTMLControls.HTMLForm
?? {
?? protected override void RenderAttributes(HTMLTextWriter writer)
?? {
?? writer.WriteAttribute("name", this.Name);
?? base.Attributes.Remove("name");
?? writer.WriteAttribute("method", this.Method);
?? base.Attributes.Remove("method");
?? this.Attributes.Render(writer);
?? base.Attributes.Remove("action");
?? if (base.ID != null)
?? writer.WriteAttribute("id", base.ClientID);
?? }
?? }
??}
???
??
??  然后我們就可以在頁面中使用它了。當然,在這之前,我們需要在頁面(或Web.config)里注冊它:
??
??使用我們自己實現的Form
??<%@ Register TagPrefix="skm" Namespace="ActionlessForm"
?? Assembly="ActionlessForm" %>
??...
??<skm:Form id="Form1" method="post" runat="server">
??...
??</skm:Form>
??
??  至此,我們已經不需要在頁面里編寫一段“巧妙”的JavaScript了,Url Rewrite之后form元素的action問題被解決了。

?

=======================================

問題描述:

一個頁面有兩次無刷新提交操作就出錯了

Sys.WebForms.PageRequestManagerServerErrorException: An unknown error occurred while processing the request on the server.The status codereturnded from the server was:12031

解決:

在頁面上加了上面那段 JS 就解決問題了,呵呵~~

<script language="javascript">
Sys.Application.add_load(function()
??? {
??????? var form = Sys.WebForms.PageRequestManager.getInstance()._form;
??????? form._initialAction = form.action = window.location.href;
??? });

</script>

轉載于:https://www.cnblogs.com/China-Dragon/archive/2009/05/12/1455099.html

總結

以上是生活随笔為你收集整理的Sys.WebForms.PageRequestManagerServerErrorException(status code 500 OR 12031)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。