Как работает Page.IsValid?

У меня есть следующий код сRequiredFieldValidator,EnableClientScript свойство установлено какложный" в проверочном контроле. Также я отключил скрипт в браузере.

Я НЕ пользуюсьPage.IsValid в коде позади. Тем не менее, когда я отправляю без какого-либо значения в текстовом поле, я получу.error message

Из комментариев @Dai я узнал, что это может быть проблемой, если есть какой-либо код вPage_Load это выполняется вpostback, Там не будет никаких ошибок проверки.

(Однако, для обработчика нажатия кнопки, нет необходимости проверять)Page.IsValid

if (Page.IsPostBack)
{
    string value = txtEmpName.Text;
    txtEmpName.Text = value + "Appended";
}

ВОПРОС

Почему проверка на стороне сервера не происходит раньше?Page_LoadПочему он работает нормально, когда я использую?Page.IsValidМожете ли вы дать ссылку на статью, которая объясняет это? (Не то, что говорит - всегда используйтеPage.IsValid; но то, что говорит, какие обязательные сценарии использоватьPage.IsValid

ОБНОВЛЕНИЕ 1

обращатьсяASP.NET валидаторы распространенное заблуждение

Page.IsValid доступно только после запускаPage.Validate() метод, который вызывается неявно где-то послеPage_Load, Если вы храните всю свою логику в обработчике событий Page_Load (что крайне нежелательно!), ВызовитеPage.Validate() перед проверкой.Page.IsValid

Заметка: Рекомендуетсяне держать вся логика вPage_Load, Если что-то должно произойти в событии нажатия кнопки, переместите его в обработчик события нажатия кнопки. Если что-то должно произойти в выпадающем событии, переместите его в выпадающий обработчик выбранного события изменения элемента.

ОБНОВЛЕНИЕ 2

Кажется, нам нужно добавитьIf(Page.IsValid) вbutton click Также, если мы используемCustom Validator с проверкой на стороне сервера. обращатьсяCustomValidator не работает хорошо.

Заметка: Вопрос проверки на стороне клиента присутствует здесь:Использовать ли Page_IsValid или Page_ClientValidate () (для событий на стороне клиента)

MARKUP





    alert('haiii');






    
    
    
    




Код позади

protected void Button1_Click(object sender, EventArgs e)
{
    string value = txtEmpName.Text;
    SubmitEmployee(value);
}

Рекомендации:

Должен ли я всегда вызывать Page.IsValid?ASP.NET Validation Controls - Важные моменты, советы и хитростиCustomValidator не работает хорошо

Ответы на вопрос(2)

Ваш ответ на вопрос