ASP.NET必填字段验证器不起作用

9

大家好,我需要一个必填字段验证器来验证我的文本框。这是我的文本框:

<asp:TextBox ID="txtTimeSlotGroupName" runat="server" AutoPostBack="false" 
     ClientIDMode="Static"></asp:TextBox>  
<font color="red">*</font>  
<asp:RequiredFieldValidator ID="RequiredFieldValidator_txtTimeSlotGroupName"
     runat="server" ControlToValidate="txtTimeSlotGroupName" Display="None"
     ErrorMessage="Timeslot Group Required!" ForeColor="Red" InitialValue="0"
     ValidationGroup="TimeSlot"></asp:RequiredFieldValidator>

我的按钮:

<asp:Button ID="btnAddTimeSlots" Text="Add Timeslots" CssClass="button" 
     runat="server" OnClick="btnAddTimeslots_Click" ValidationGroup="TimeSlot" 
     OnClientClick="javascript:shouldsubmit=true;"/>

我没有看到错误信息。有什么解决方法吗?

2
需要将“ValidationGroup”放到“txtTimeSlotGroupName”中 :) - zey
8个回答

23

您还需要定义Textbox的验证组,才能使其正常工作。

   <asp:TextBox ID="txtTimeSlotGroupName" runat="server" 
        AutoPostBack="false" ValidationGroup="TimeSlot" ClientIDMode="Static"></asp:TextBox>

9

从RequiredFieldValidator标记中删除InitialValue="0",在验证文本框时不需要它。


7

我曾经也遇到过同样的问题。请检查您的页面是否有任何JavaScript。无论如何,都要使用Page.Validate()方法以及在您的代码中使用if(Page.IsValid)。这将自动强制进行验证控件,并解决问题。


3
如果两个对象具有相同的ID,则必填字段验证器不起作用。

你能澄清一下吗?“对象”没有“id”——你是指变量的名称吗?如果是,从哪个上下文来看?或者,也许你是指元素的“id”属性?如果是这样,那么是哪些元素?你是指页面上具有相同id的任何元素都会破坏验证吗?我对此表示怀疑,但这是我能解释得最接近的了。非常感谢您提供的任何其他详细信息! - defines
虽然有点晚了,但CHEGNI的意思是页面上的任何元素。文本框、必填字段验证器、按钮、自定义验证器,任何东西都可以。任何两个具有id="idname"的元素。如果任何两个具有相同的ID,则某些事情可能会出错,特别是在JavaScript中。 - Chillin'
@CHEGENI是对的吗?6年后有没有解决方案? - N Khan

1

你只需要在文本框中添加ValidationGroup="TimeSlot"即可。

    <asp:TextBox ID="txtTimeSlotGroupName" runat="server" AutoPostBack="false" 
   ValidationGroup="TimeSlot"   ClientIDMode="Static"></asp:TextBox>

1

我曾经遇到过同样的问题...但是以上回答都没有解决我的问题...

我的问题是在按钮按下方法中缺少了Page.isValid。下面是我的按钮代码和被按钮调用的方法。

按钮:

<asp:Button ID="btnBtmSave" runat="server" Text="Save" OnClick="btnSave_Click" BtnGroup="save" TabIndex="18" />

按钮方法:
protected void btnSave_Click(object sender, EventArgs e)
{
    if (Page.IsValid)
    {
        //Logic goes here
    }
}

0

将所有文本框和按钮添加到同一验证组中,并进行验证。

   ValidationGroup="AAA" 

并将代码添加到您的保存按钮中:

  If (Page.IsValid) Then
        YOURSQL.Insert()
   'or ur code here'
    End If

0
在我的情况下,对于按钮,我同时使用了客户端验证(即onClientClick="return validate()")和ASP.NET验证(即Reguired field Validation (ValidationGroup))。因此,必填字段验证器没有触发。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接