asp.net - ASP.NET 窗体的奇怪页面行为。Request.HttpMethod 是 POST 但 Page.IsPostBack 返回 False
问题描述
我在里面有 .aspx 页面的奇怪行为iframe
。第一次单击提交按钮不会产生Page.IsPostBack
也不会触发回发处理程序。第二次点击就可以了。这是代码。
.aspx
<!DOCTYPE html>
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="form.aspx.vb" Inherits="form" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>form inside iframe</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<%--More controls--%>
<asp:Button Text="Submit" ID="btnSubmit" runat="server" />
</div>
</form>
</body>
</html>
.aspx.vb
Partial Class form
Inherits System.Web.UI.Page
Private Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
'// After first click on btnSubmit Page.IsPostBack is False
'// and btnSubmit_Click handler isnot fired
'// After second click on btnSubmit Page.IsPostBack is True
'// and btnSubmit_Click handler IS fired
'//This is a patch to work around misbehavior
If Request.HttpMethod = "POST" Then
btnSubmit_Click(btnSubmit, EventArgs.Empty)
End If
End If
End Sub
Private Sub btnSubmit_Click(sender As Object, e As EventArgs) Handles btnSubmit.Click
'//Do something
End Sub
End Class
这个问题主要是一个警告,因为我已经解决了这个问题。
解决方案
推荐阅读
- python - Python 3.8 - 软件包版本已损坏,但在本地安装时有效
- python - 使用类定义扫描计算机系统文件
- javascript - Javascript 无法识别“src”
- spring-boot - 使用 Jhipster 进行自定义查询选择
- microsoft-teams - ms 团队自动发送“附件 ID”的 HTTP POST
- ethereum - 智能合约特许权使用费已实施,但所有者没有获得任何份额
- node.js - Cobertura 格式代码覆盖率报告,用于 Azure Devops 上的 React App
- android - 我可以通过 Android Emulator 摄像头看到我的桌面屏幕吗?
- graphql - 我们如何捕获 quarkus 抛出的未经授权的异常
- c# - c#forms如何获取用户控件的dll输出以从添加到现有项目的项目中添加到工具箱