Странное поведение страницы ASP.NET Форма. Запрос.HttpMethod-это СООБЩЕНИЕ, но Страница.IsPostBack возвращает значение False

#asp.net

Вопрос:

У меня странное поведение страницы .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
 

Вопрос в основном является предупреждением, так как я уже исправил проблему.

Комментарии:

1. Получаете ли вы ожидаемое поведение, если оно не размещено в iFrame?

2. конечно, да. Это стандартное поведение страницы.

3. Я подозреваю, что это как-то связано с кэшированием.

4. Выполняется ли метод Page_Load как при начальной загрузке страницы, так и при первом щелчке? Я думаю , что в соответствии с устаревшими токенами проверки подлинности запросов и т. Д. (Т. Е. кэшированием, как вы упомянули) Также являются хост-и дочерние страницы в одном домене/

5. @JonP iframe Page_Load не запускается при начальной загрузке родительской страницы (которая кэшируется). загрузка страницы iframe срабатывает при первом и втором щелчке. Первый щелчок… см.соч. Родительская страница кэшируется. Обе страницы (родительская и iframe) находятся в одном домене.