我们只要在响应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)相关推荐

  1. RabbitMQ在Docker中安装以及Management API returned status code 500错误

    docker安装rabbitMQ docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq --restart=always --hostna ...

  2. NuxtServerError:Request failed with status code 500 我的解决办法与思路

    目录 一.问题来源 二.解决思路 三.解决办法 四.总结 一.问题来源 平时使用nuxt和部署上线都是正常运行的,偶尔有一天报500的错误; Nuxt.js运行(npm run dev)报错如下: 服 ...

  3. proxy代理报错: Uncaught (in promise) Error: Request failed with status code 500

    POST http://localhost:8013/check/login 500 (Internal Server Error) createError.js:16 Uncaught (in pr ...

  4. Uncaught (in promise) Error: Request failed with status code 500

    分享一些状态码400 404 500等原因: 出错: 前端: // 获取所有的导航菜单async getMenuList(){const {data:res} = await this.$http.g ...

  5. 莫名其妙的Status Code: 500,返回值500是什么问题呢?构造函数恐怖如斯

    构造函数恐怖如斯 事情是这样的今天调试程序时本来一切正常,完美运行(嘿嘿),之前一顿乱改(其实没改什么,就是觉得数据库中表的数据量太少,想用循环加点,之后的几个小时从这里开始,血的教训),之前正常运行 ...

  6. request failed with status code 500翻译_英语歌词的文言文翻译:文艺清新还是矫揉造作?...

    I like you,but just like you. 纵然万劫不复,纵然相思入骨,我也待你眉眼如初,岁月如故. 第一次读到这句文言文翻译的时候,感觉译文的很美,但这种美和英文原文却并没有太多的联 ...

  7. API集成测试问题2:Expected status code 200 but received 500. Failed asserting that false is true.

    接上文,之前的错误消失了,出现了新的问题如下: PHPUnit 8.5.0 by Sebastian Bergmann and contributors. .F 2 / 2 (100%) Time: ...

  8. HTTP状态码-HTTP Status Code

    HTTP状态码->HTTP Status Code HTTP Status Code 常见的状态码: HTTP: Status 200 – 服务器成功返回网页HTTP: Status 404 – ...

  9. HTTP协议状态码详解(HTTP Status Code)

    HTTP协议状态码详解(HTTP Status Code) 使用ASP.NET/PHP/JSP 或者javascript都会用到http的不同状态,一些常见的状态码为: 200 – 服务器成功返回网页 ...

最新文章

  1. Python Set Literals
  2. 图像抠图Image Matting算法调研
  3. HH SaaS电商系统的商品销售管理标签功能模块设计
  4. oracle 01589,ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项
  5. netty 游戏服务器框图_基于Netty和WebSocket协议实现Web端自动打印订单服务方法与流程...
  6. FPGA核心板内部各类型资源总结(xilinx)
  7. LaTeX使用小结2
  8. honeywell Xenon TM 1900二维码扫描枪扫描不显示中文
  9. android控制音量大小,Android AudioTrack音量控制笔记总结
  10. NYOJ234-吃土豆(双层DP)
  11. H5+在浏览器中打开相机扫描二维码
  12. java.net.UnknownHostException: localhsot
  13. FPGA学习-Verilog例化说明
  14. Apple 好莱坞艳照门的安全分析
  15. html表格打印边框不全,解决table边框在打印中不显示的问题 (转)
  16. 360需要的,不是打工者——周鸿祎在360新员工入职培训上的讲话
  17. 中国ORC低温余热发电系统市场深度调研报告(2023版)
  18. 移动内部疯传的11篇VoLTE学习笔记,看懂了你也是技术大神(一)
  19. SV TechClub 第四届 美女与野兽 2019区块链游戏黑客马拉松
  20. 并行,串行,流水线,线程和进程傻傻分不清楚

热门文章

  1. 【Tomcat】解决GET方式传递的参数(URL中的参数)乱码问题
  2. 用符号方法求下列极限或导数matlab,实验7答案 Matlab符号计算
  3. 美国研发出第一台计算机的时间,研发世界第一台电脑的核心人物,被美国隐藏35年,只因他是个华人...
  4. gre可以用计算机,GRE数学能用计算器吗
  5. sessionlistener方法中获取session中存储的值报空指针异常_从Golang实践中得到的教训...
  6. db2查最新值的前一天值_现在的C1驾照值多少钱?最新价格曝光,老司机一看赚翻了...
  7. vim配置python代码提示,VIM配置成Python IDE
  8. python 切换环境_python 使用 pyenv 多环境切换
  9. 构造函数,对象原型,实例对象三者之间的关系
  10. 好习惯!pandas 8 个常用的 option 设置