根据此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
答案 0 :(得分:1)
ASP.NET按钮呈现<input type="submit" />
以回发表单,并且永远不会使用此方法。 __doPostBack
方法仅用于非输入按钮的元素,这些元素通常不会对服务器造成POST操作。这是一个位于Microsoft的JavaScript文件中的函数,只能在客户端上呈现出来。 __doPostBack的常见用途是LinkButton控件,可能包含AutoPostBack="true"
的控件以及其他控件。
此外,可能会调用WebForms_DoPostBack ...这样的名称也会回发,但内部调用__doPostBack。
如果您在单击按钮时尝试阻止回发,请附加到表单的提交事件,并以此方式取消回发操作。