Пользовательский валидатор asp.net не запускается для текстового поля

Действительно поместите материал, связанный с авторизацией/управлением доступом в контроллере.

Модели - все о Ваших данных. Проверка, Отношения, CRUD, Бизнес-логика

Представления о показе Ваших данных. Дисплей и быть введенным только.

Контроллеры об управлении, какие данные идут от Вашей модели до Вашего представления (и которые просматривают), и от Вашего представления до Вашей модели. Контроллеры могут также существовать без моделей.

мне нравится думать о контроллере как охраннику / регистратор, который направляет Вас клиент (запрос) к соответствующему счетчику, где Вы задаете кассиру (представление) вопрос. Кассир (представление) тогда идет и получает ответ от менеджера (модель), кого Вы никогда не видите. Вы запрос тогда возвращается к охраннику / регистратор (контроллер) и ожидает, пока Вы не предписаны пойти другой кассир (представление), кто говорит Вам ответ, менеджер (модель) сказал им в ответ на другого кассира (представление) вопрос.

Аналогично, если Вы хотите сказать кассиру (представление) что-то тогда в основном, то же самое происходит кроме второго кассира, скажет Вам, принял ли менеджер Вашу информацию. Также возможно, что охранник / регистратор (контроллер), возможно, сказал Вам брать экскурсию, так как Вы не были разрешены сказать менеджеру ту информацию.

Так для расширения метафоры, в моем стереотипном и нереалистичном мире, кассиры (представления) симпатичны, но легкомысленны и часто верят чему-либо, что Вы говорите им, охранник / регистраторы минимально вежливы, но не очень хорошо осведомлены, но они знают, где люди должны и не должны идти, и менеджеры действительно уродливы и имеют в виду, но знают все и могут сказать то, что верно и что не.

28
задан Justin Morgan 25 February 2011 в 16:45
поделиться

4 ответа

Не забудьте установить это свойство на CustomValidator ...

ValidateEmptyText="True"
9
ответ дан 28 November 2019 в 02:30
поделиться

В дополнение к приведенным выше предложениям, я обнаружил, что в более новых версиях .Net framework вы должны явно запустить метод validate () на сервере, чтобы получить пользовательскую процедуру проверки

    // validate page before allowing import to go through
    Page.Validate();
    if (!Page.IsValid)
        return;
4
ответ дан 28 November 2019 в 02:30
поделиться

Убедитесь, что для свойства CustomValidator установлено значение true, поэтому пустой текст будет проверен. Тогда вам больше не понадобится RequiredFieldValidator.

РЕДАКТИРОВАТЬ: Я взял ваш код и скопировал и вставил его в пустой проект, и он работает, как ожидалось. Должно быть, что-то, что вы не опубликовали или публикуете неправильно, о чем мы не знаем. Есть ли что-то еще, что влияет на кнопку, которая запускает проверку или сами элементы управления проверкой?

РЕДАКТИРОВАТЬ: Вот точный код (он находится на странице содержимого):

aspx page:

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <asp:TextBox ID="txtPRI" runat="server" Width="295" /><br />
    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" display="Dynamic" CssClass="leftAlign" SetFocusOnError="true"  runat="server" controltovalidate="txtPRI" errormessage="Please enter your PRI" />  
    <asp:CustomValidator runat="server" id="cusCustom" controltovalidate="txtPRI" onservervalidate="cusCustom_ServerValidate" Enabled="true" ValidateEmptyText="true" display="Dynamic" CssClass="leftAlign" SetFocusOnError="true"  errormessage="The text must be exactly 8 characters long!" /> 
</asp:Content>

.cs page (пусто Page_Load):

protected void cusCustom_ServerValidate(object sender, ServerValidateEventArgs e)
{ 
    // put a break point here and it stops on it
    if (e.Value.Length == 8)
        e.IsValid = true;
    else
        e.IsValid = false;
} 
49
ответ дан 28 November 2019 в 02:30
поделиться

Проблема в том, что вы звоните Response.End() , что фактически останавливает все выполнение страницы. Таким образом, блок if / else вообще не запускается. Закомментируйте эту строку или пропустите ее во время отладки, и валидатор сработает, как и ожидалось.

Я предлагаю вам использовать отладчик вместо того, чтобы писать ответы таким образом, или знать о последствиях Response.End(), если вы решите его использовать.

1
ответ дан 28 November 2019 в 02:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: