根据此post,您可以通过覆盖此函数__doPostBack来拦截post,但它不起作用。如果我查看生成的源代码,我无法看到应该自动生成的函数,并导致asp.net进行回发。
这个函数在哪里?我该如何拦截它呢?
我使用的是asp.net 4和vs 2012
Default.aspx
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script>
//breaks here as it cant find __doPostBack
var __original = __doPostBack;
__doPostBack = myFunction();
function myFunction() {
alert('intercept');
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server" ></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Button" />
</div>
</form>
</body>
</html>Default.aspx.vb
Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub form1_Load(sender As Object, e As EventArgs) Handles form1.Load
End Sub
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim txt As String = TextBox1.Text
End Sub
End Class发布于 2013-05-21 22:38:24
ASP.NET按钮呈现一个<input type="submit" />以回发窗体,并且永远不会使用此方法。__doPostBack方法仅用于不是输入按钮的元素,这些输入按钮通常不会导致对服务器的POST操作。这是一个位于微软JavaScript文件中的函数,并且只在客户机上呈现出来。__doPostBack的常见用法是LinkButton控件、可能具有AutoPostBack="true"的控件等。
另外,可能会有一个电话打给WebForms_DoPostBack...与此类似的东西也会回发,但内部调用__doPostBack。
如果您试图防止单击按钮时回发,请附加到窗体的submit事件,并以这种方式取消回发操作。
https://stackoverflow.com/questions/16671182
复制相似问题