Asp.net 选择特定的dropdownlist项目时,如何在dropdownlist下方显示消息而不是警告框?

Asp.net 选择特定的dropdownlist项目时,如何在dropdownlist下方显示消息而不是警告框?,asp.net,vb.net,updatepanel,autopostback,Asp.net,Vb.net,Updatepanel,Autopostback,为了提供一致性,当有人在dropdownlist中选择特定项时,我不能使用警报框在代码中显示消息。只有当有人选择了特定项目时,它才需要在下拉字段下方显示红色消息 因此,在这种情况下,如果有人从州下拉列表中选择阿拉巴马州,则在做出选择后,需要立即在下拉列表框下方显示一条红色消息。此表单的旧版本工作准确,但表单中有许多更改的新版本未显示此消息 在代码隐藏文件(aspx.vb文件)中,我有以下代码片段: Protected Sub StateDropDownList_SelectedIndexChan

为了提供一致性,当有人在dropdownlist中选择特定项时,我不能使用警报框在代码中显示消息。只有当有人选择了特定项目时,它才需要在下拉字段下方显示红色消息

因此,在这种情况下,如果有人从州下拉列表中选择阿拉巴马州,则在做出选择后,需要立即在下拉列表框下方显示一条红色消息。此表单的旧版本工作准确,但表单中有许多更改的新版本未显示此消息

在代码隐藏文件(aspx.vb文件)中,我有以下代码片段:

Protected Sub StateDropDownList_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles StateDropDownList.SelectedIndexChanged
    If StateDropDownList.Text = "AK" Then
        AlabamaPanel.Visible = True
        Session("Alabama") = "Yes"
    Else
        AlabamaPanel.Visible = False
        Session("Alabama") = "No"
    End If
            StateDropDownList.Focus()
End Sub
我在使用以前的代码进行某些编辑,问题的另一部分是我不理解Session(“Alabama”)部分-我在代码中找不到Session(“Alabama”)列出的任何地方,或者更确切地说,我不理解Session()是什么,它甚至不知道什么是Alabama会话。。。所以,如果您了解Session()的一些内容,这可能会有所帮助-我看到了这个(),但这并不能帮助我理解。代码中阿拉巴马州自身存在的唯一位置是dropdownlist中的项目。这可能是问题的一部分,因为在旧代码中,阿拉巴马州在一个长列表中被特别指出,例如(在aspx文件中,而不是在aspx.vb文件中),例如:


阿拉巴马州
阿拉斯加州
亚利桑那州
阿肯色州
加利福尼亚
科罗拉多州
康涅狄格州
特拉华州
哥伦比亚特区
佛罗里达州
佐治亚州
夏威夷
爱达荷州
伊利诺伊州
印第安纳州
爱荷华州
堪萨斯州
肯塔基州
路易斯安那州
缅因州
马里兰
马萨诸塞州
密歇根
明尼苏达州
密西西比
密苏里州
蒙大拿
内布拉斯加州
内华达州
新罕布什尔州
新泽西州
新墨西哥州
纽约
北卡罗来纳州
北达科他州
俄亥俄州
奥克拉荷马
俄勒冈
宾夕法尼亚
罗德岛
南卡罗来纳州
南达科他州
田纳西州
得克萨斯州
犹他州
佛蒙特州
维吉尼亚
华盛顿
西弗吉尼亚
威斯康星州
怀俄明州
但是现在我们调用另一个VB文件来获取状态下拉列表,上面显示的完整集合不再出现在代码中

由于除了此列表之外,没有其他地方不再存在,或者此列表确实存在于我们调用的单独vb文件中,该文件正在成功填充dropdownlist,那么这可能会阻止Session()工作

在新代码中(在aspx文件中,而不是在aspx.vb文件中),上述所有内容均替换为:

状态*
我正在尝试使用(在aspx文件中):



如果用户选择阿拉巴马州,而该文本根本不显示,则可在下拉字段下方的页面上显示文本。我还尝试将长长的状态列表放回,而不是调用单独的下拉列表vb文件

我还尝试使用更新面板,用一个


这让我受益匪浅,因为在此之前,每当有人从下拉列表中选择阿拉巴马州时,我都无法将autopostback=“true”包含在内,而不将我带到一个空白屏幕。现在至少整个屏幕没有空白。。。但我仍然没有得到要在屏幕上显示的信息

我也尝试过这个,但仍然没有出现任何消息:


如果有人选择阿拉巴马州,为什么我的信息没有显示出来,你有什么想法或明显的证据吗?

试试这个:

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>

<asp:UpdatePanel runat="server" ID="updtPnl">
<ContentTemplate>
    <asp:DropDownList class="form-control" ID="StateDropDownList" runat="server" AutoPostBack="True" OnSelectedIndexChanged="StateDropDownList_SelectedIndexChanged">
        <asp:ListItem Value="Al">Alabama</asp:ListItem>
        <asp:ListItem>Other value</asp:ListItem>
    </asp:DropDownList>

    <br />
    <asp:Label ID="AlabamaLabel" runat="server" visibile="false" Text=""
    Font-Bold="True" ForeColor="#e00022" />
</ContentTemplate>
</asp:UpdatePanel>

在您提供的原始代码中,存在以下问题:

1) 您查看的是下拉列表中的缩写文本,而不是下拉列表中作为值的文本,因此需要使用类似StateDropDownList的内容。SelectedValue=“AK”


2) 但是,面板设置为可见;您没有将标签的可见性设置为true,因此面板是可见的,但其中没有可见的控件

我已经编辑了你的标题。请参阅“”,其中的共识是“不,他们不应该”。另外,请注意你的缩进-我们实际上必须阅读这些内容。
Protected Sub StateDropDownList_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles StateDropDownList.SelectedIndexChanged
If StateDropDownList.SelectedValue = "Al" Then
    AlabamaLabel.Text = StateDropDownList.SelectedItem.Text + " is selected!"
    AlabamaLabel.Visible = True
Else
    AlabamaLabel.Visible = False
End If
End Sub