【问题标题】:RequiredFieldValidator not firingRequiredFieldValidator 未触发
【发布时间】:2014-04-11 14:16:13
【问题描述】:

我有一个简单的表单,文本框上有一个必需的验证器。当我将文本框留空并检查 Page.isValid 时,它总是正确的。我无法弄清楚我做错了什么导致页面始终为真。

<asp:TextBox ID="txtVendorTracking" runat="server" Width="150px"></asp:TextBox>
<asp:RequiredFieldValidator ID="rfvTxtVendorTracking" 
    InitialValue="Enter Vendor Tracking Nbr" runat="server" 
    ErrorMessage="Vendor Tracking Required." ControlToValidate="txtVendorTracking" 
    ValidationGroup="val" Display="Dynamic">*</asp:RequiredFieldValidator> 

    <asp:Button ID="btnSave" runat="server" Text="Save" Width="100px"  onclick="btnSave_Click" ValidationGroup="val"/>

           protected void btnSave_Click(object sender, EventArgs e)
        {
            Page.Validate(MasterValidation.ValidationGroup);
            if (!Page.IsValid)
            {
                ModalPopupExtender3.Show();
                txtRONbr.Focus();
                return;
            }
          }

【问题讨论】:

  • 文本框有初始值吗?
  • 没有。我把它留空。页面加载,我搜索一些数据并预填充一些字段,其余部分留空。然后我点击提交。我也没有在任何空白字段上设置任何焦点。

标签: c# asp.net validation requiredfieldvalidator


【解决方案1】:

由于文本框的初始状态是空的,问题就出在这里:

InitialValue="Enter Vendor Tracking Nbr"

MSDN:

仅当关联输入控件的值时验证失败 在失去焦点时匹配此 InitialValue。

由于验证器的初始值不是空字符串,因此它将空字符串视为有效输入。要解决问题,您需要确定文本框的初始状态,并相应地设置验证器。例如,现在您应该从标记中删除 InitialValue - 它默认为 String.Empty

【讨论】:

  • 或者 OP 可以将 Enter Vendor Tracking Nbr 作为占位符文本添加到 textBox 值中。
  • 我觉得我做的事情很愚蠢。我很少使用验证器,而我的新公司喜欢使用它们,所以这就是我复制代码而不完全理解它们是如何工作的。谢谢安德烈。
猜你喜欢
  • 1970-01-01
  • 2013-06-01
  • 1970-01-01
  • 2017-08-08
  • 1970-01-01
  • 2011-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多