发布于 2016-06-14 00:34:11 | 131 次阅读 | 评论: 1 | 来源: 网友投递

这里有新鲜出炉的精品教程,程序狗速度看过来!

ASP.NET

ASP.NET 是.NET FrameWork的一部分,是一项微软公司的技术,是一种使嵌入网页中的脚本可由因特网服务器执行的服务器端脚本技术,它可以在通过HTTP请求文档时再在Web服务器上动态创建它们。 指 Active Server Pages(动态服务器页面) ,运行于 IIS(Internet Information Server 服务,是Windows开发的Web服务器)之中的程序 。


ASP.NET页面借助IFrame提交表单数据所遇到问题的解决方法分享,碰到同样问题的朋友可以参考下。
首先看下面的代码片段,我们希望用户在点击页面上的Button时首先将数据提交到指定的第三方页面,然后再执行后台的Page_Load事件。
 
<body> 
<iframe id="WebGatewaySubmissionProcessor_IFrame" name="WebGatewaySubmissionProcessor_IFrame" style="display: none;"></iframe> 
<form onsubmit="javascript:if (typeof WebGatewayDoubleSubmission != 'undefined') {WebGatewayDoubleSubmission(this);}" id="Form1" runat="server"> 
<div id="page"> 
<asp:Button ID="BtnClientSend" runat="server" /> 
</div> 
<script type="text/javascript" id="WebGatewayScript"> 
WebGatewayDoubleSubmission = function(o) { 
var oldAction = o.action; 
var oldOnSubmit = o.onsubmit; 
var oldTarget = o.target; 
var oldMethod = o.method; 
var iframeSubmisionTarget = document.getElementById("WebGatewaySubmissionProcessor_IFrame"); 
var submitPostIframeSubmission = function() { 
o.action = oldAction; 
o.target = oldTarget; 
o.method = oldMethod; 
o.onsubmit = oldOnSubmit; 
o.submit(); 
}; 
/*iframeSubmisionTarget.onload = submitPostIframeSubmission;*/ 
eventPush(iframeSubmisionTarget, 'load', submitPostIframeSubmission); 
o.action = "http://webgateway.hostedmscrm.com/V2/formprocessor.aspx"; 
o.target = "WebGatewaySubmissionProcessor_IFrame"; 
o.onsubmit = null; 
o.method = "POST"; 
o.submit(); 
}; 
WebGatewaySubmission = function(o) { 
o.action = "http://webgateway.hostedmscrm.com/V2/formprocessor.aspx"; 
o.method = "POST"; 
}; 
function eventPush(obj, event, handler) { 
if (obj.addEventListener) { 
obj.addEventListener(event, handler, false); 
} else if (obj.attachEvent) { 
obj.attachEvent('on' + event, handler); 
} 
} 
</script> 
</form> 
</body> 

Form中的onsubmit事件在页面被提交时触发,此时首先执行WebGatewayDoubleSubmission脚本方法,在该方法中,将当前Form的action,onsubmit,target,method缓存到指定的变量中,然后将Form的action和target指向另一个页面进行提交,此时页面上的数据被Post到第三方页面。然后再使用页面上隐藏的IFrame来调用submitPostIframeSubmission方法,并将原先的Form进行提交。这里有一个问题,在上面的代码中有一行被注释掉了,原因就是直接使用IFrame的onload方法并不能触发该事件,从而导致submitPostIframeSubmission方法不能执行,页面的第二次提交不成功!使用eventPush方法可以有效地解决该问题。
同时,在服务端的Page_Load事件中,需要使用IsPostBack来判断页面是否被提交了:
 
protected void Page_Load(object sender, EventArgs e) 
{ 
if (Page.IsPostBack) 
{ 
//TODO: 
} 
} 

相关资料:
http://www.4ucode.com/Study/Topic/1087401 
http://wiki.operamasks.org/pages/viewpage.action?pageId=1835020 



最新网友评论  共有(1)条评论 发布评论 返回顶部
pjntpux 发布于2016-08-13 21:19:28
mark
支持(0)  反对(0)  回复

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务