15

我的页面中有两个文本框和两个按钮。

一个是隐藏的,另一个是显示的。

当我单击 时Button1,它将保存两者的数据,TextBox并通过RequiredFieldValidator.

然后当我点击时Button2,它会隐藏自己(Button2)并显示隐藏的TextBox

两者TextBox都有RequiredFieldValidator针对Button1的事件点击进行验证。

现在我的问题是当我简单地在第一个文本框输入文本并单击保存时,单击按钮正在验证隐藏字段的必填字段。我只想在显示 2 文本框时对其进行验证。

我怎样才能避免这种情况?

4

5 回答 5

30

好吧,您可以简单地使用Enabled="false".RequiredFieldValidator

根据您的问题,您markup会看起来像这样。

<asp:TextBox runat="server" ID="tb1"></asp:TextBox>
<asp:RequiredFieldValidator runat="server" ID="rfv1" ControlToValidate="tb1" ErrorMessage="*" ValidationGroup="gvSave">
</asp:RequiredFieldValidator>

<asp:TextBox runat="server" ID="tb2" Visible="false"></asp:TextBox>
<asp:RequiredFieldValidator runat="server" ID="rfv2" ControlToValidate="tb2" ErrorMessage="*" Enabled="false" ValidationGroup="gvSave">
</asp:RequiredFieldValidator>

<asp:Button runat="server" ID="btn1" Text="Save" onclick="btn1_Click" ValidationGroup="gvSave"/>
<asp:Button runat="server" ID="btn2" Text="Show" onclick="btn2_Click" />

而你codebehind是这样的:

protected void btn2_Click(object sender, EventArgs e)
{
    tb2.Visible = true;
    rfv2.Enabled = true; // Enables the second requiredfieldvalidator
}

protected void btn1_Click(object sender, EventArgs e)
{
  // your Saving code here
}
于 2013-04-05T07:34:54.133 回答
4

使用ValidationGroup="group"属性button并将验证组分配给要验证的文本。希望它会有所帮助

于 2013-04-05T06:56:01.997 回答
2

您可以CausesValidation="false"为辅助按钮指定,当验证组 A) 单个字段过多和 B) 您必须在添加更多控件时维护验证组(我们是否将其放在按钮上,验证器,字段验证摘要?记住标准的不是很多,但在编辑时不太实用。

于 2013-04-05T07:06:58.757 回答
1

这是 Aspx :

                 <td align="right">
                            Cut Type :
                        </td>
                        <td class="required">
                            <telerik:RadComboBox ID="cmbCutType" runat="server" MaxHeight="200px" Width="200px"
                                Filter="Contains" EnableLoadOnDemand="true" EmptyMessage="Select Cut Type" OnSelectedIndexChanged="cmbCutType_SelectedIndexChanged"
                                AutoPostBack="true">
                            </telerik:RadComboBox>
                            <asp:RequiredFieldValidator runat="server" ID="rfvCutType" Display="None" ControlToValidate="cmbCutType" InitialValue=""
                                ValidationGroup="Save" ErrorMessage="Cut Type is Mandatory"
                                ForeColor="Red"></asp:RequiredFieldValidator>
                            <ajaxToolkit:ValidatorCalloutExtender ID="vceCutType" TargetControlID="rfvCutType"
                                runat="server">
                            </ajaxToolkit:ValidatorCalloutExtender>
                        </td>

这是后面的代码:

protected void btn2_Click(object sender, EventArgs e)
{
    rfvCutType.IsValid = false;
}

试试这个.......

于 2013-04-10T10:45:52.643 回答
0

如果您希望使用后端验证,请检查一下,它对我有用。

Requiredfieldvalidator.Enabled = False

必填字段验证器是一个 ID。

我正在工作的项目所有字段都可见,但根据某些条件,必须禁用验证。

于 2020-07-22T17:10:25.963 回答