拦截__doPostBack函数

时间:2013-05-21 13:22:42

标签: asp.net vb.net postback

根据此post,您可以通过覆盖此函数__doPostBack拦截帖子,但它不起作用。如果我查看生成的源代码,我将无法看到自动生成的函数,并导致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

1 个答案:

答案 0 :(得分:1)

ASP.NET按钮呈现<input type="submit" />以回发表单,并且永远不会使用此方法。 __doPostBack方法仅用于非输入按钮的元素,这些元素通常不会对服务器造成POST操作。这是一个位于Microsoft的JavaScript文件中的函数,只能在客户端上呈现出来。 __doPostBack的常见用途是LinkBut​​ton控件,可能包含AutoPostBack="true"的控件以及其他控件。

此外,可能会调用WebForms_DoPostBack ...这样的名称也会回发,但内部调用__doPostBack。

如果您在单击按钮时尝试阻止回发,请附加到表单的提交事件,并以此方式取消回发操作。