Как отключить проверку на стороне сервера на веб-формах asp.net из браузера? - PullRequest
1 голос
/ 09 декабря 2011

Я хотел отключить управление сервером проверки asp.net из браузера.Я проверил онлайн, но не нашел способа отключить проверку на стороне сервера;его можно отключить только на стороне клиента с помощью JS / jQuery.

Вот сценарий: у меня есть флажок, и я выбираю, который отображает набор текстовых полей.Только если флажок установлен, обязательное поле проверки должно запускаться для текстовых полей.Я не хочу вызывать постбэк на флажок.На самом деле эти блоки chceck будут сгенерированы с использованием шаблонов jQuery, поэтому обратная передача не позволяет отключить проверку правильности.

Я хотел бы знать, есть ли способ отключить свойство .CausesValidation для элементов управления из браузера.используя некоторые настройки?Или есть способ захвата элементов управления, которые должны рассматриваться как проверяющие в некоторых случаях перед загрузкой страницы?

[Обновить] На основе принятого ответа, вот мое решение:

<form id="form1" runat="server">
<div>
    <asp:TextBox ID="textbox1" runat="server"></asp:TextBox>
    <asp:RequiredFieldValidator ID="req1" ControlToValidate="textbox1" runat="server"
        ErrorMessage="enter text"></asp:RequiredFieldValidator>
    <asp:TextBox ID="textbox2" runat="server"></asp:TextBox>
    <asp:RequiredFieldValidator ID="req2" ControlToValidate="textbox2" runat="server"
        ErrorMessage="enter text for 2"></asp:RequiredFieldValidator>
    <asp:CheckBox ID="check1" runat="server" Text="choose" />
    <asp:Button ID="submitBtn" runat="server" OnClick="submitBtn_Click" Text="submit" />
    <asp:CustomValidator ID="cvBox" runat="server" ErrorMessage="Error" ValidationGroup="prueba"
        OnServerValidate="Validarcaja"></asp:CustomValidator>
    <asp:ValidationSummary ID="summary" runat="server" />
</div>
</form>



protected void Page_Load(object sender, EventArgs e)
{
    req1.Enabled = false;
    req2.Enabled = false;
}
protected void submitBtn_Click(object sender, EventArgs e)
{
    if (Page.IsPostBack)
    {
        Page.Validate();
        if (Page.IsValid)
        {
            Response.Write("valid form");
        }
        else
        {
            Response.Write("invalid form");
        }
    }
}
protected void Validarcaja(object source, ServerValidateEventArgs args)
{
    if (check1.Checked)
    {
        req1.Enabled = true;
        req1.Validate();

    }
}

1 Ответ

0 голосов
/ 09 декабря 2011

Решением для меня было бы использование CustomValidator с методом OnServerValidate.

В методе OnServerValidate я бы проверил, установлен ли флажок, в этом случае я бы проверил, заполнены ли текстовые поля. Нет необходимости вносить какие-либо изменения в свойство CausesValidation. Единственное условие - не включать свойство «ControlToValidate». CustomValidator не срабатывает, если текстовое поле пустое, поэтому. Так что код будет выглядеть так:

  <asp:ValidationSummary ID="vs" runat="server" ValidationGroup="prueba" />
    <asp:CheckBox ID="chb" runat="server" Text="Check" />
    <asp:TextBox ID="txbBox" runat="server"></asp:TextBox>    
    <asp:CustomValidator ID="cvBox" runat="server"  ErrorMessage="Error" ValidationGroup="prueba"  
    OnServerValidate="Validarcaja"></asp:CustomValidator>
    <asp:Button ID="btn" runat="server" Text="Prueba" />

И код позади:

     protected void Page_Load(object sender, EventArgs e)
            {
 if (IsPostBack)
            {
                Page.Validate();
            }
            }

            protected void Validarcaja(object source, ServerValidateEventArgs args)
            {
                if (chb.Checked)
                {
                    if (txbBox.Text == String.Empty)
                    {
                        cvBox.IsValid = false;                    
                    }

                }
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...