Пользовательский Validator запускается, но он не обновляет ValidationSummary - PullRequest
3 голосов
/ 30 ноября 2010

Привет! Я работаю над пользовательским валидатором поля формы, похоже, что пользовательский валидатор работает, не позволяя ему перейти к следующей странице, но он не обновляет сводку проверки и не отображает звездочку и ярлыки, которые я сделал видимыми. У меня также есть другие валидаторы, такие как RequiredFieldValidator в том же поле. Моя группа ValidationGroup установлена, как и текст и IsValid. Я даже написал и установил фиктивный метод проверки на стороне клиента в javascript, как предлагают некоторые обходные пути.

вот сводный код проверки в asp.net

<asp:ValidationSummary ID="ValidatorSummary" runat="server" ValidationGroup="Step2" />

здесь пользовательский валидатор и обязательное поле один

<asp:CustomValidator ID="AddressVerification" runat="server" ErrorMessage="Please enter a valid address." Display="Dynamic" ValidationGroup="Step2" OnServerValidate="AddressVerification_ServerValidate" ClientValidationFunction="CustomValidatorDummy" Text="*" Enabled="true" EnableClientScript="true"></asp:CustomValidator>
<asp:RequiredFieldValidator ID="RFValidatorHomeAddress" runat="server" ErrorMessage="Please enter home address." Text="*" Display="Dynamic" ValidationGroup="Step2" ControlToValidate="txtHomeAddress"></asp:RequiredFieldValidator>

вот пользовательский метод проверки в коде

protected void AddressVerification_ServerValidate(object sender, ServerValidateEventArgs e)
{
//lets just say it doesn't validate and sets the IsValid to false
lblUspsValidatorResHomeCity.Visible = true;
lblUspsValidatorResHomeState.Visible = true;
lblUspsValidatorResHomeZip.Visible = true;
e.IsValid = false;
}

пожалуйста, посоветуйте, спасибо.

EDIT: Ответил - как упомянуто по битам. Сводка проверки также должна быть размещена внутри панели обновлений. Спасибо!

Вот так:

<asp:UpdatePanel ID="UpdatePanelValidationSummaryHome" ChildrenAsTriggers="false" UpdateMode="Conditional"
runat="server">
<ContentTemplate>
    <asp:ValidationSummary ID="AddressHomeValidationSummary" runat="server" ValidationGroup="AddressHomeValidationGroup"
        CssClass="errors" /> 
</ContentTemplate>

, а затем вызвать обновление:

UpdatePanelValidationSummaryHome.Update();

Ответы [ 2 ]

6 голосов
/ 30 ноября 2010

В вашем объявлении CustomValidator.

EDIT

вы, похоже, отсутствует ControlToValidate Если ваш CustomValidator объединяет несколько элементов управления, попробуйте следующее:

ASPX

<asp:TextBox ID="txtMyTextBox" runat="server" />
<asp:CustomValidator ID="AddressVerification" runat="server"
    Display="Dynamic"
    ErrorMessage="Please enter a valid address."
    OnServerValidate="AddressVerification_ServerValidate"
    Text="*"
    ValidationGroup="Step2" />
<asp:RequiredFieldValidator ID="rfvAddress" runat="server"
    ControlToValidate="txtMyTextBox"
    Display="Dynamic"
    ErrorMessage="Please enter an address"
    Text="*"
    ValidationGroup="Step2" />
...
<asp:ValidationSummary ID="ValidatorSummary" runat="server"
    ValidationGroup="Step2" />
...
<asp:Button ID="btnCheckAddresses" runat="server"
    CausesValidation="true"
    Text="Check Addresses"
    ValidationGroup="Step2" />

CS

protected void AddressVerification_ServerValidate(object source, ServerValidateEventArgs args) {
    args.IsValid = !string.IsNullOrEmpty(txtMyTextBox.Text) && !txtMyTextBox.Text.Contains(' ');
}

Обратите внимание, что группа проверки элемента управления, вызывающего сообщение, имеет CausesValidation="true" и имеет тот же ValidationGroup, что ивалидаторы.

РЕДАКТИРОВАТЬ 2

Если ваш элемент управления обратной передачей был в UpdatePanel, а ValidationSummary - нет, то частичная обратная передача не обновила бы ValidationSummary.Как только вы удалили элемент управления обратной передачей из UpdatePanel, я полагаю, что он сгенерирует полную обратную передачу, что обновит ваш ValidationSummary.

Я не знаю, что еще находится в вашем UpdatePanel,но многие люди сообщают о проблемах с их валидаторами, находящимися в UpdatePanel .

Извлечение MSDN ,

Когда вы используете элемент управления ValidationSummary внутри элемента управления UpdatePanel, убедитесь, что элемент управления валидатора и элемент управления, с которым он связанв той же панели.Дополнительные сведения об использовании элемента управления UpdatePanel для частичных обновлений страниц см. В разделе Обзор визуализации частичных страниц.

, а также в этом блоге MSDN .

0 голосов
/ 30 октября 2013

Убедитесь, что каждый проверяемый элемент управления (текстовое поле, флажок и т. Д.), Все RequiredValidator, CustomValidator и ValidationSummary имеют одинаковые значения ValidationGroup .

, т.е.*

Конечно, это будет работать, только если все элементы управления находятся внутри одной панели или родительского элемента управления.

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