1

以下は、私のコードのテスト シナリオです。1) ユーザーが Webpage.aspx のラジオ ボタンの 1 つを選択すると、モーダル ポップアップ エクステンダーが表示されます。2) ユーザー コントロール (SSL_Ticket.ascx) は、モーダル ポップアップ ウィンドウ内で定義されます。3) RequiredFieldValidator は、ユーザー コントロール内に含まれるドロップダウン リストに対して定義されます。4) ユーザーがドロップダウン リストから値「0」を選択すると、検証エラー メッセージは表示されません。

コード

Webpage.aspx

                     <asp:RadioButtonList ID="RadioButtonListForTicket" runat="server"  AutoPostBack="true"
                         OnSelectedIndexChanged="radioButtonListForTicket_OnSelectedIndexChanged">
                            <asp:ListItem Selected="True">No</asp:ListItem>
                            <asp:ListItem>Yes</asp:ListItem>
                      </asp:RadioButtonList>
                      <ajaxToolkit:ModalPopupExtender ID="ModalPopupExtenderForTicket" runat="server" BackgroundCssClass="popUpStyle"
                          DropShadow="true" PopupControlID="divTicketPreview" PopupDragHandleControlID="panelDragHandle"
                          TargetControlID="btnForPopupAppear"   CancelControlID="btnForPopupDisappear"/>

…………
_

Webpage.aspx.cs

protected void radioButtonListForTicket_OnSelectedIndexChanged(object sender, System.EventArgs e)
{
    if (RadioButtonListForTicket.SelectedItem.Text.ToString().Equals("Yes"))
    {

        // Check if the sites are selected
        updateSelectionCount();
        updateListOfSites();

        if (selectionCount == 0)
        {
            lblSSLTicketSelection.Text = "Please select a site.";
            RadioButtonListForTicket.SelectedValue = "No";
            return;
        }
        else
        {
            lblSSLTicketSelection.Text = "";
        }

        ....

        ModalPopupExtenderForTicket.Show();
    }
}

...

SSL_Ticket.ascx

           <asp:DropDownList ID="cmbRootCause" runat="server" Width="255px" OnSelectedIndexChanged="cmbRootCause_SelectedIndexChanged" AutoPostBack="true"
                CausesValidation="true">
                <asp:ListItem Value="0">Select</asp:ListItem>
                <asp:ListItem Value="1">Item1</asp:ListItem>
           </asp:DropDownList>
           <asp:RequiredFieldValidator ID="reqdFieldForRootCause" runat="server" ControlToValidate="cmbRootCause" InitialValue="Select" 
               ErrorMessage="Please select root cause" ValidationGroup="validateRootCause"  Visible="false" Display="Dynamic" EnableClientScript="true">
           </asp:RequiredFieldValidator>

...

SSL_Ticket.ascx.cs

    protected void cmbRootCause_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (cmbRootCause.SelectedItem.ToString().Equals("Other"))
        {
            lblcmbRootCause.Text = "";
            lblcmbRootCause.Visible = false;
            txtRootCauseOther.Visible = true;
        }
        else if (cmbRootCause.SelectedItem.ToString().Equals("Select"))
        {
            lblcmbRootCause.Visible = true;
            lblcmbRootCause.Text = "Please select root cause";
        }
        else
        {
            lblcmbRootCause.Text = "";
            lblcmbRootCause.Visible = false;
            txtRootCauseOther.Visible = false;
        }
    }

いくつかのソリューション (ValidateProperty、クライアント側の検証、RangeValidation など) を参照しましたが、検証テキストは起動しませんでした。

これは役に立たなかった -ユーザー コントロール内で RequiredFieldValidator を処理する

どうもありがとうございました。

ありがとう!!!

4

2 に答える 2

0

必須フィールド バリデーターから属性を削除visible = falseします。デフォルトでは、属性は最初に表示されません。

<asp:RequiredFieldValidator ID="reqdFieldForRootCause" runat="server" ControlToValidate="cmbRootCause" InitialValue="Select" 
               ErrorMessage="Please select root cause" ValidationGroup="validateRootCause"  **Visible="false"** Display="Dynamic" EnableClientScript="true">
           </asp:RequiredFieldValidator>
于 2013-03-05T18:22:26.137 に答える
0

あなたの「RequiredFieldValidator」で、DropDownListこれを削除する必要があります:

InitialValue="Select"
于 2013-03-05T18:22:44.540 に答える