我试图用AJAX Control Toolkit modalpopupextender对话框替换VB.net代码中的所有传统MsgBox函数。我有两个问题:modalpopupextender标记引用的面板显示在主页上,而.Show()VB代码未显示预期的弹出窗口。
许多人无疑都知道,传统的MsgBox函数在Visual Studio中的调试过程中可以正常工作,但由于是WinForm而不是WebForm,因此在部署后无法正常工作。因此,我试图将我所有的MsgBox函数转换为modalpopupextender对话框。我不想使用javascript警报,因为它们的功能太受限制,而且坦率地说,它们很丑陋。
这导致了两个问题。首先,由modalpopupextender标记引用的面板在加载后立即显示在主页上,这显然是不可取的。其次,我的VB代码中的.Show()行不显示任何弹出窗口。
我会告诉你一些我觉得奇怪的东西。如果我单步执行代码,则进入.Show()时,输出窗口将显示以下消息。
进入:跳过非用户代码'GCDBv3._Default.get_mpe_MsgBox'
在这种情况下,mpe_MsgBox是modalpopupextender控件的ID。我觉得调试器正在跳过代码,但是我不确定。
这是主页的相关标记。我首先从如果密码字段的LEN为0(即所需的密码字段未完成)出现的消息框开始。
<%@ Page Title="GCDB" Language="VB" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.vb" Inherits="GCDBv3._Default" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
<!-- Modal Popup Extender -->
<ajaxToolkit:ModalPopupExtender ID="mpe_MsgBox" runat="server" TargetControlID="cmd_Log_In" PopupControlID="pnl_MsgBox" CancelControlID="cmd_MsgBox_OK"></ajaxToolkit:ModalPopupExtender>
<asp:Panel ID="pnl_MsgBox" runat="server">
<p>Password required.</p>
<asp:Button ID="cmd_MsgBox_OK" runat="server" Text="OK" />
</asp:Panel>
cmd_Log_In 是指“登录”按钮,位于页面下方。脚本管理器代码位于 Site.Master 页面上,以防万一。我了解到ajaxToolkit:ScriptManager已停产。
这是相关的VB代码。这是单击 cmd_Log_In 时运行的子项的一部分。
If Len(txt_Password.Text) = 0 Then
'MsgBox("Password is required.")
mpe_MsgBox.Show()
Valid_Login = False
Return
End If
除了 mpe_MsgBox.Show()。此代码的所有行均按预期执行。
我已经遵循了有关modalpopupextender代码的几套不同说明,但并没有得到所需的弹出窗口。我也没有收到任何可以调试的错误消息。好像这行代码被忽略了。
任何帮助将不胜感激。版本信息如下。
Visual Studio 2017 v.15.9.5版 .NET Framework 4.7.03062版 AjaxControlToolkit v.18.1.1