【问题标题】:Enable/Disable Required field validator from cs page?从cs页面启用/禁用必填字段验证器?
【发布时间】:2013-03-27 11:50:56
【问题描述】:

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

一个被隐藏,另一个被显示。

当我点击Button1时,它将保存两个TextBox的数据,并通过RequiredFieldValidator验证每个TextBox。

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

TextBox 都有 RequiredFieldValidator 验证 Button1 的事件点击。

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

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

【问题讨论】:

  • ControlToValidate 属性是否存在哪个控件验证或发布您的代码,我们将帮助您。
  • 你能提供一些你的代码吗?

标签: c# javascript asp.net validation


【解决方案1】:

您可以简单地使用RequiredFieldValidatorEnabled="false" 属性。

根据您的问题,您的 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
}

【讨论】:

  • 感谢您向我暗示ValidationGroup
  • 也帮助了我。谢谢!
【解决方案2】:

使用ValidationGroup="group" 属性到button 并将验证组分配给您要验证的文本。 希望对你有帮助

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      这是 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;
      }
      

      试试这个......

      【讨论】:

        【解决方案5】:

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

        Requiredfieldvalidator.Enabled = False
        

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

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

        【讨论】:

          猜你喜欢
          • 2011-07-16
          • 2018-02-10
          • 1970-01-01
          • 2015-09-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多