web-dev-qa-db-ja.com

csページから必須フィールドバリデーターを有効/無効にしますか?

ページに2つのTextBoxと2つのボタンがあります。

一方が非表示になり、もう一方が表示されます。

Button1をクリックすると、2つのTextBoxのデータが保存され、RequiredFieldValidatorによって各TextBoxが検証されます。

次に、[Button2]をクリックすると、自動的に非表示になり(Button2)、非表示のTextBoxが表示されます。

両方のTextBoxには、Button1のイベントクリックに対して検証するRequiredFieldValidatorがあります。

現在、私の問題は、1番目のTextBoxにテキストを入力して[保存]をクリックするだけです。ボタンをクリックすると、非表示フィールドの必須フィールドが検証されます。 2つのテキストボックスが表示されているときに検証するだけです。

どうすればこれを回避できますか?

14
Rahul Chowdhury

さて、あなたは単純に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
}
29
Praveen Nambiar

使用 ValidationGroup="group"プロパティをbuttonに追加し、検証グループを検証するテキストに割り当てます。それが役立つことを願っています

4

セカンダリボタンにCausesValidation="false"を指定できます。これは、検証グループがA)単一のフィールドに対して過剰であり、B)さらにコントロールを追加するときに検証グループを維持する必要がある場合(冗長性が低く、混乱を招く可能性があります)ボタン、バリデーター、フィールドand検証サマリー?標準を覚えていることはあまりありませんが、編集する場合は実用的ではありません。

2
Grant Thomas

これは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;
}

これを試して.......

1
Chetan Sanghani