0

下午所有,

一旦用户单击提交按钮,我需要在 Web 表单上验证两个文件。这些 Web 表单还包含一个验证摘要,以使用户了解错误消息。

我的代码看起来像这样......

     <td>                       
         <asp:TextBox ID="txtOrganiser" runat="server"  ></asp:TextBox>      
     </td>
     <td>
         <asp:RequiredFieldValidator ID="RequiredFieldVal0"
                     ControlToValidate="txtOrganiser" 
                     ErrorMessage="Meeting Organiser"
                     Text="*" 
                     runat="server" Display="None"/>
      </td>
      <td>      
         <asp:DropDownList ID="AgendaStatus" 
               runat="server" Height="24px" Width="125px"> </asp:DropDownList>        
      </td>    
      <td>
          <asp:RequiredFieldValidator ID="RequiredFieldValidator1"
                     ControlToValidate="AgendaStatus" 
                     ErrorMessage="Agenda Status"
                     Text="*" 
                     runat="server" Display="None"/>
      </td>
      <td>
          <asp:ValidationSummary ID="ValidationSummary"
            HeaderText="You must enter a value in the following fields:"
            DisplayMode="BulletList"
            EnableClientScript="true"
            runat="server"/>
      </td>

“会议组织者”的代码运行良好。但是“AgendaStatus”下拉菜单没有。我认为这是因为下拉列表本质上已经有一个默认值来提示用户选择项目?

议程下拉列表使用此代码...

 'Used for the Enum property on the web page for the dropdown (Agenda Template.aspx)
Private Sub BindStatus()
    AgendaStatus.DataSource = EnumHelper.ToList(GetType(AgendaStatus))

    AgendaStatus.DataTextField = "Value"
    AgendaStatus.DataValueField = "Key"
    AgendaStatus.DataBind()

    AgendaStatus.Items.Insert(0, New ListItem(" - Please Select -", "~"))
End Sub

而这段代码...

Imports Microsoft.VisualBasic
Imports SembCorp.CoreLib

Public Enum AgendaStatus
   <EnumDescription("Created")> _
   TempCreated = 1
   <EnumDescription("In Progress")> _
   InProgress = 2
   <EnumDescription("Completed")> _
   Completed = 3

End Enum

如果下拉框没有选定的项目,则会显示一条错误消息...

Requested value '~' was not found.

我可以看到为什么显示此错误,因为用户没有选择下拉选项之一。但是我认为我可以添加RequiredFieldValidator 工具来解决这个问题。这没有奏效,我没有解决方案。

任何帮助都是提前得到的。

问候贝蒂

4

2 回答 2

1

首先,您可以设置AppendDataboundItems为 true,这样您就可以在 aspx 标记上以声明方式添加您的默认项:

<asp:DropDownList ID="AgendaStatus"
    AppendDataboundItems="true" 
    runat="server" Height="24px" Width="125px"> 
    <asp:ListItem Value="-1" Text=" - Please Select -"></asp:ListItem>
</asp:DropDownList>  

然后您可以将验证器设置InitialValue"-1"以确保第一项不是有效的用户选项:

 <asp:RequiredFieldValidator ID="RequiredFieldValidator1"
                 InitialValue="-1"
                 ControlToValidate="AgendaStatus" 
                 ErrorMessage="Agenda Status"
                 Text="*" 
                 runat="server" Display="None"/>
于 2012-08-15T15:08:59.433 回答
0

从列表项值中删除“~”。也设置AppendDataBoundItems="true"DropDownList

于 2012-08-15T15:09:20.087 回答