включать и отключать валидатор asp с помощью встроенного кода в теге asp.

включение и отключение валидатора asp с использованием встроенного кода в теге asp не работает, значение записывается, но управление все еще включено. Пожалуйста, проверьте появление

Enabled="<%# Convert.ToBoolean(txtText.Enabled) ? false : true%>" 

в этой форме:

<form id="frmValidator" runat="server">
    <div>
        <asp:ValidationSummary
            ID="Summary"
            runat="server"
            HeaderText="Error(s):"
            CssClass="msg-error" />
        <asp:TextBox ID="txtText" runat="server" MaxLength="15" Enabled="false" />
        <asp:RequiredFieldValidator
            ID="rfvtxtText"
            runat="server"
            ControlToValidate="txtText"
            ErrorMessage="Requiered."
            Display="None"
            ClientValidationFunction=""
            SetFocusOnError="true"
            Enabled="<%# Convert.ToBoolean(txtText.Enabled) ? false : true%>" />

        <asp:RegularExpressionValidator
            ID="revtxtText"
            runat="server"
            ControlToValidate="txtText"
            Display="None"
            ErrorMessage="Invalid."
            ValidationExpression="[a-zA-ZñÑáéíóúÁÉÍÓÚ ,.*]{3,50}"
            SetFocusOnError="true"
            Enabled="<%# Convert.ToBoolean(txtText.Enabled) ? false : true%>" />

        <asp:Button
            ID="btnSave"
            runat="server"
            Text="Save" />
    </div>
<form>

person Alexander Osora Paulino Henrqu    schedule 29.04.2015    source источник
comment
txtText.Enabled не нужно преобразовывать в логическое значение, не так ли?   -  person Wiktor Stribiżew    schedule 29.04.2015
comment
Да, но все равно не работает Enabled=‹%# txtText.Enabled ? false : true%› валидатор продолжает с истинным значением   -  person Alexander Osora Paulino Henrqu    schedule 29.04.2015


Ответы (2)


Ответ: вы не можете.

<%# %> – это синтаксис выражения привязки данных. Вы не можете использовать его без ServerControl, такого как GridView, ListView.

Обычно мы отключаем/включаем управление из кода позади.

Javascript-метод

Другой подход — отключить проверку с помощью Javascript. Однако вам нужно перенаправить на другую страницу или сделать что-то после нажатия кнопки. В противном случае сообщение проверки будет отображаться обратно пользователю после обратной отправки.

<script type="text/javascript">
    if (document.getElementById('<%= txtText.ClientID %>').getAttribute('disabled') === 'disabled') {
        alert('disabled');
        ValidatorEnable(document.getElementById('<%= rfvtxtText.ClientID %>'), false);
        ValidatorEnable(document.getElementById('<%= revtxtText.ClientID %>'), false);
    }
</script>
person Win    schedule 29.04.2015
comment
отключить проверку с помощью javascript, изменить включенное значение на false, но все равно валидатор продолжает запускать массаж, я предупреждаю валидатор, и это ложь - person Alexander Osora Paulino Henrqu; 30.04.2015

На мой взгляд, это должно быть возможно. Хотя я сам еще новичок, я всегда забываю, какой самородок кода что делает. Я бы попробовал <%: --expression-- %>.
Второй ответ на этот вопрос довольно хорош резюме.

person Sami    schedule 29.04.2015
comment
Попробуйте использовать только ‹% --code-- %›. Вы должны иметь возможность использовать почти что угодно в любом месте. Просто не забудьте поставить точку с запятой ( ; ) после кода в этом слепке, как и в коде программной части. - person Sami; 30.04.2015