Как закрыть всплывающую форму после сохранения в asp.net и vb.net веб-приложение

#javascript #jquery #asp.net #vb.net #knockout.js

#javascript #jquery #asp.net #vb.net #knockout.js

Вопрос:

Я новичок в asp.net и vb.net .

Я поддерживаю веб-приложение, которое содержит много пользователей и их информацию. Со страницы list.aspx, если кто-то нажимает на любое отдельное имя из списка, он переходит на другую страницу с именем update_status.aspx, которая содержит информацию о конкретном пользователе. На этой странице создается форма, в которой мы можем обновить информацию об этом пользователе, нажав кнопку обновить в этой форме. После нажатия кнопки обновления обновление сохраняется и перенаправляется на страницу details.aspx.

Теперь эта страница update_status.aspx преобразуется во всплывающую страницу и переименовывается в update_status_popup.aspx

Теперь требуется закрыть всплывающее окно после обновления, когда кто-то нажимает кнопку обновить, и не перенаправлять на страницу details.aspx

Как я могу это сделать. Веб-страница построена с asp.net и vb.net

Я включаю приведенные ниже коды.

Следующая ссылка открывает всплывающее окно с именем Update_status_popup.aspx

  <a class="hover-glow" style="cursor:pointer;"  data-placement="bottom" rel="tooltip" title="change status" data-bind="click: $parent.openPopup"><i class="icon icon-random"></i>                                     </a>
  

В файле update_staus_popup.aspx код кнопки обновления

 <div class="btn-wrapper">
            <button runat="server" id="btnUpdate" class="btn" data-bind="enable: ((statusId() == 10 amp;amp; offeredSalary() < 0) || (statusId() == 11 amp;amp; finalSalary() < 0) || (feeType() == 2 amp;amp; introductionFee() <= 0 amp;amp; statusId() == 11 amp;amp; agencyApp() == 'True')) ? false : true">Update</button>
            <a class="btn" href="javascript:window.close();">Close</a>
        </div>
  

есть две кнопки ОБНОВИТЬ и ЗАКРЫТЬ. Кнопка закрытия также закрывает окно, но клиенту требуется автоматически закрыть форму после обновления.

настоящее VB.net код для btnUPDATE выглядит следующим образом

  Protected Sub btnUpdate_ServerClick(sender As Object, e As EventArgs) Handles btnUpdate.ServerClick



    If comNewStatus.Items.Count <= 0 Then
        Response.Redirect("details.aspx?i=" amp; Request("i"))
    End If


    Dim previusStatus = VacancyApplication.Status, _
        newStatus = CInt(comNewStatus.Value)


    If newStatus <> VacancyApplication.StatusID Then


        Try

            If newStatus = 10 Then
                VacancyApplication.OfferedSalary = CType(txtOfferedSalary.Value, Decimal)
                VacancyApplication.AddNote("Offered: " amp; txtOfferedSalary.Value)
            ElseIf newStatus = 11 Then

                VacancyApplication.AddNote("Final salary: " amp; txtFinalSalary.Value)
                Vacancy.FinalSalary = CDec(txtFinalSalary.Value)
                Vacancy.Save()
                If Vacancy.FeeType = 1 AndAlso CDec(txtFinalSalary.Value) > 0 Then
                    Vacancy.CalculateFees()
                    Vacancy.SaveFees()
                End If
                Dim vh As New VacancyHistory With {.VacancyID = VacancyApplication.VacancyID, .Description = "Final salary added. Amount:" amp; txtFinalSalary.Value}
                vh.Save()
            ElseIf newStatus = 12 Then
                VacancyApplication.StartDate = CDate(txtStartDate.Value)
                VacancyApplication.AddNote("Start date: " amp; txtStartDate.Value)
            End If


            If Vacancy.FeeType = 2 AndAlso CDec(txtFinalIntroductionFee.Value) Then
                Vacancy.SetFinalIntroductionFee(CDec(txtFinalIntroductionFee.Value))
                Dim vh As New VacancyHistory With {.VacancyID = VacancyApplication.VacancyID, .Description = "Introduction fee added as per variable fee type. Fee:" amp; txtFinalIntroductionFee.Value}
                vh.Save()
            End If
            VacancyApplication.Save()
            VacancyApplication.UpdateStatus(CInt(comNewStatus.Value), True, False)

        Catch ex As Exception
            _logger.Fatal(ex.Message)
            Response.Redirect("/E4/Error/500.aspx")
        End Try

        If Not String.IsNullOrWhiteSpace(txtNote.Value) Then VacancyApplication.AddNote(txtNote.Value.Trim())

        _logger.Fatal("details.aspx?i=" amp; VacancyApplication.ID amp; "amp;c=" amp; VacancyApplication.StatusID)


    End If
    Response.Redirect("details.aspx?i=" amp; VacancyApplication.ID amp; "amp;c=" amp; VacancyApplication.StatusID)

End Sub
End Class
  

Приведенный выше код перенаправляет страницу на страницу details.aspx (которая также открывается в том же всплывающем окне и не выглядит умной.). Пожалуйста, предложите мне код, который закроет страницу update_status_popup.aspx после сохранения деталей.

Ответ №1:

Вы можете использовать RegisterClientScriptBlock

 Page.ClientScript.RegisterClientScriptBlock(Me.GetType(),"CloseWindowScript","window.close();",True)
  

Используйте это вместо Response.Redirect ; он будет вводить вызов window.close() при перезагрузке страницы, что приведет к закрытию окна.