0

根据这篇文章,您可以通过覆盖此函数来拦截该帖子, __doPostBack但它不起作用。如果我查看生成的源代码,我将看不到自动生成的函数并导致 asp.net 进行回发。

这个功能在哪里?以及如何拦截它?

我正在使用 asp.net 4 和 vs 2012

默认.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>

默认.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
4

1 回答 1

1

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

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

如果您试图阻止单击按钮时的回发,请附加到表单的提交事件,然后以这种方式取消回发操作。

于 2013-05-21T14:38:23.563 回答