NLV*_*NLV 11 c# asp.net postback
我想拦截任何回传在当前页面之前它发生.我想在回发服务之前做一些自定义操作.任何想法如何做到这一点?
wom*_*omp 21
您可以采取一些措施来拦截客户端上的回发.
__doPostBack函数如下所示:
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,在实际执行回发之前,它会调用"theForm.onsubmit()".这意味着如果您为表单分配一个onsubmit javascript函数,它将始终在每次回发之前调用.
<form id="form1" runat="server" onsubmit="return myFunction()">
Run Code Online (Sandbox Code Playgroud)
或者,您实际上可以覆盖__doPostBack函数并将其替换为您自己的函数.这是在ASP.Net 1.0天中使用的旧技巧.
var __original= __doPostBack;
__doPostBack = myFunction();
Run Code Online (Sandbox Code Playgroud)
这会将__doPostBack函数替换为您自己的函数,您可以从新函数中调用原始函数.
使用以下选项
所有选项都适用于启用了ajax的表单和简单表单.
返回false以取消任何提交处理程序中的提交.
Page.ClientScript.RegisterOnSubmitStatement(Page.GetType(), "submit-handler", "alert(\"On PostBack\");");
Run Code Online (Sandbox Code Playgroud)
等价的javascript - 不要同时使用此代码与之前的代码
// Modify your form tag like this
<form onsubmit="javascript:return submit_handler();" ...>
// Add this script tag within head tag
<script type="text/javascript">
function submit_handler() {
// your javascript codes
// return false to cancel
return true; // it's really important to return true if you don't want to cancel
}
</script>
Run Code Online (Sandbox Code Playgroud)
如果您想完全控制__doPostBack,请将此脚本放在表单标记旁边
<script type="text/javascript">
var default__doPostBack;
default__doPostBack = __doPostBack;
__doPostBack = function (eventTarget, eventArgument) {
// your javascript codes
alert('Bye __doPostBack');
default__doPostBack.call(this, eventTarget, eventArgument);
}
</script>
Run Code Online (Sandbox Code Playgroud)
使用ASP.NET 4.0进行测试