假设你有一个类似于ASP.NET ASP:DetailsView的控件,用于显示和编辑数据库中的单个记录。
添加验证和验证摘要以记录错误案例非常简单。当更新表单未通过验证时,它会自然地发出警告:显示验证消息和/或验证摘要。不需要任何代码后台。
但是,当您通过验证时,更新将完全静默。没有任何感觉发生了什么,并且似乎没有默认设置可以在没有代码后台的情况下生成成功消息。
但是,即使是代码后台也很困惑。哪个事件应该显示成功消息?onItemUpdate,对吗?好吧,但是假设您进行另一次更改并获得验证错误怎么办?您的成功消息将保留。我无法找到可靠关闭现有成功消息的事件(如果存在验证错误)。
这应该是Web开发的基础!为什么这么难?
编辑:
有人建议使用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;
}
一旦我成功更新了,但是似乎没有任何方法可以使那个消息消失,甚至无法通过验证来消除。
第二次编辑:
只想明确一下,我确实尝试在Page_Load中添加ClearMessages代码。然而,当我第二次点击更新且出现验证错误时,似乎没有任何方法可以使成功消息标签消失。有人能提供其他的故障排除提示吗?
((MyMaster)Page.Master).SetMessage("Success")
,你可以为使用该母版页的所有页面提供“信息消息”支持。 - Dan C.