Как работает 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 не работает хорошо