【发布时间】:2013-05-21 13:22:41
【问题描述】:
根据这个post,你可以通过覆盖这个函数__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
【问题讨论】:
-
__doPostBack 函数应该在页面上有回发控件(如 asp:LinkButton)时自动生成。但是你为什么需要拦截呢?
-
因为我无法通过 jquery 或按钮单击或表单提交添加 return false
-
:) 就像:-你为什么要杀死兔子? - 因为我不想杀猫。无论如何,您是否尝试将 LinkButton 添加到页面,例如警报 typeof(__doPostBack)。如果那是函数,则您的函数已成功自动生成,如果未定义,则否。因此,之后您可以拦截此功能并按照您提供的链接中的建议覆盖它。那你有什么问题?