Насколько я знаю, нет никакого собственного способа сделать это. Вы можете рассуждать об этом, возможно, Microsoft услышит это:).
Сброс «сообщения об успехе» на Page_Load или в любом месте кода, не будет работать. Это связано с тем, что проверка ASP.NET обычно выполняется как на стороне клиента, так и на стороне сервера. Это означает, что для каждого элемента управления проверки, который вы помещаете на страницу, ASP.NET генерирует некоторый клиентский Javascript, который выполняет проверку и отображает ошибку на клиенте, без , возвращаясь на сервер. Таким образом, вы застряли с сообщением об успехе и сообщением об ошибке одновременно.
Что вы можете с этим поделать:
- разместите на своей странице элемент управления
<div>
, который будет отображать сообщение об успехе (как уже было предложено другими выше). Всякий раз, когда вы обновляете что-либо (в коде на стороне сервера), показывайте элемент управления и устанавливайте значимое «Успешно!» текст сообщения.
- зарегистрируйте пользовательскую функцию Javascript, которая будет искать
<div>
и скрывать ее при каждой отправке страницы. Помните, что эту функцию необходимо вызывать перед автоматически сгенерированным клиентским скриптом, который выполняет проверку.
Если вы посмотрите на клиентский источник страницы ASP.NET (с валидаторами на ней), вот что вы можете найти:
<form name="aspnetForm" method="post" action="MyPage.aspx" onsubmit="javascript:return WebForm_OnSubmit();id="aspnetForm">
WebForm_OnSubmit генерируется ASP.NET и вызывает JavaScript, который выполняет проверку. Пример:
function WebForm_OnSubmit() {
if (typeof(ValidatorOnSubmit) == "function" && ValidatorOnSubmit() == false)
return false;
return true;
}
Чтобы зарегистрировать свой пользовательский код, который скрывает сообщение об успехе, вы должны поместить (в своем коде позади) что-то вроде этого:
if (!Page.ClientScript.IsOnSubmitStatementRegistered("ClearMessage"))
{
string script = @"document.getElementById('" +
yourDivControl.ClientID + "').style.display='none'";
Page.ClientScript.RegisterOnSubmitStatement(Page.GetType(), "ClearMessage", script);
}
Это превратит автоматически сгенерированный WebForm_OnSubmit вашей страницы в следующее:
function WebForm_OnSubmit() {
document.getElementById('ctl00_yourDivControl').style.display='none';
if (typeof(ValidatorOnSubmit) == "function" && ValidatorOnSubmit() == false)
return false;
return true;
}
Эффект:
При каждой обратной передаче (например, когда запускается ItemCommand, или когда нажимается какая-либо кнопка «Сохранить», или что-либо еще), вы будете отображать элемент управления div с сообщением «success». При следующей обратной передаче перед отправкой страницы на сервер это сообщение очищается. Конечно, если эта обратная передача также вызывает «успех», сообщение снова отображается кодом на сервере. И так далее, и тому подобное.
Надеюсь, вышесказанное полезно. Это не полноценное решение, но оно дает достаточно подсказок, чтобы указать вам правильное направление.