假设您有类似 ASP.NET ASP:DetailsView 的东西来显示和编辑数据库中的单个记录。
记录错误情况很简单……您添加验证和验证摘要。当您的更新表单验证失败时,它自然会产生噪音:它显示验证消息和/或验证摘要。不需要后面的单个代码。
但是,您通过了验证,它使您的更新完全静默。没有任何意义发生了任何事情,而且似乎没有任何默认设置可以在没有代码隐藏的情况下发出成功消息。
但是,即使是代码隐藏也令人困惑。什么事件应该显示成功消息?onItemUpdate,对吧?很好,但是假设您进行了另一项更改并收到验证错误?您的成功信息将保留。如果出现验证错误,我无法找到能够可靠地关闭现有成功消息的事件。
这应该是 Web 开发 101!为什么这么难?
编辑:
有人建议使用 ItemCommand 事件......我尝试了这个和许多其他事件,但成功消息不会消失。这是一些代码。
我在 ASP.NET 中的消息
<label id="successMessage" class="successMessage" runat="server"></label>
还有我的 DataView 标签(简化):
<asp:DetailsView
Id="EditClient"
DataKeyNames="LicenseID"
DataSourceID="MySource"
runat="server"
OnItemUpdated="SuccessfulClientUpdate"
OnItemCommand="ClearMessages">
而且,我的代码隐藏:
protected void SuccessfulClientUpdate(object sender, DetailsViewUpdatedEventArgs e)
{
successMessage.InnerText = string.Format("Your changes were saved.");
successMessage.Visible = true;
}
protected void ClearMessages(object sender, DetailsViewCommandEventArgs e)
{
successMessage.InnerText = string.Empty;
successMessage.Visible = false;
}
但是,一旦我成功更新,似乎没有什么能让该消息消失,甚至没有验证失败。
第二次编辑:
只是想明确一点,我确实尝试将 ClearMessages 代码放在 Page_Load 中。但是,当我第二次点击更新并出现验证错误时,似乎没有什么能让 successMessage 标签消失。任何人都可以建议任何其他故障排除技巧吗?