Есть ли способ проверить, имеет ли элемент управления ValidationSummary свое свойство IsValid, установленное на true, с помощью Javascript в событии OnClientClick кнопки?
Я пытаюсь показать сообщение "пожалуйста, подождите, пока ваш файл загружается" на странице загрузки, но если я использую javascript для отображения этого сообщения, оно появляется, даже если ValidationSummary содержит ошибки, поэтому сообщение появляется вместе с ошибками внизу, что сбивает пользователей с толку.





Я предполагаю, что вам следует сделать отключить кнопку загрузки и показать сообщение во время загрузки. Например, с помощью панели ajax и шаблона прогресса.
Я думаю, это сделает то, что вы хотите.
var isValid = false;
if (typeof(Page_ClientValidate) == 'function')
{
isValid = Page_ClientValidate();
}
if (isValid)
{
ShowMessage(...);
}
Кроме того, он повторно проверяет. Я думаю, что подход в принятом ответе лучше, потому что у него не должно быть ни одной из этих проблем.
Если другим нужно что-то подобное, вот мое решение:
В событии OnClientClick кнопки я вызываю функцию javascript с именем showContent (). В этой функции я использую setTimeout для вызова второй функции, которая проверяет свойство IsValid страницы:
function showContent()
{
setTimeout("delayedShow()", 1);
}
function delayedShow()
{
if (Page_IsValid != null && Page_IsValid == true)
{
document.getElementById('divUploading').style.display = "block";
}
}
Page_IsValid возвращает true в событии OnClientClick, потому что после этого выполняется проверка javascript, поэтому задержка в 1 секунду позволяет правильно установить свойство IsValid.
Считаю проверку Page_IsValid != null излишней. То же самое и с == true, поскольку ASP.NET, похоже, назначает true или false только Page_IsValid. Думаю, можно просто упростить условие до if (Page_IsValid).
Если у вас есть несколько групп валидации на одной странице, вы должны проверить только определенную группу:
var isValid = Page_ClientValidate('GroupName');
проблема не во время загрузки, а когда элемент управления ValidationSummary выдает ошибку, которую пользователь должен исправить. Мне нужно знать, что произошла ошибка, и не показывать "ожидающий" div