ASP.NET 中有没有本地方法可以发出“成功消息”?

2023-11-24

假设您有一个类似 ASP.NET ASP:DetailsView 的东西来显示和编辑数据库中的单个记录。

记录错误情况很简单...您添加验证和验证摘要。当您的更新表单验证失败时,它自然会发出噪音:它显示验证消息和/或验证摘要。不需要任何后面的代码。

但随后,您通过了验证,这使得您的更新完全静默。没有任何感觉发生了任何事情,并且似乎没有任何默认设置可以在没有代码隐藏的情况下发出成功消息。

但是,即使是代码隐藏也令人困惑。什么事件应该显示成功消息? onItemUpdate,对吗?好吧,但是假设您进行了另一项更改并收到验证错误?您的成功信息将保留。如果存在验证错误,我无法找到能够可靠地关闭现有成功消息的事件。

这应该是Web开发101!为什么这么难?

EDIT:

有人建议使用 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 标签消失。任何人都可以建议任何其他故障排除技巧吗?


据我所知,没有本地方法可以做到这一点。你可能会抱怨它,也许微软会听到它:)。

在 Page_Load 上或代码隐藏中的任何位置重置“成功消息”将不起作用。这是因为 ASP.NET 验证通常在客户端和服务器端完成。这意味着对于您放在页面上的每个验证控件,ASP.NET 都会生成一些客户端 Javascript 来执行验证并在客户端上呈现错误,without返回到服务器。因此,您会同时看到成功消息和错误消息。

您可以采取什么措施:

  • place a <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 控件。在下一次回发时,就在将页面提交到服务器之前,此消息将被清除。当然,如果此回发也触发“成功”,则服务器上的代码隐藏会再次显示该消息。等等等等。

我希望以上内容对您有所帮助。这不是完整的解决方案,但它提供了足够的提示来为您指明正确的方向。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET 中有没有本地方法可以发出“成功消息”? 的相关文章

  • 如何将带有 IP 地址的连接字符串放入 web.config 文件中?

    我们当前在 web config 文件中使用以下连接字符串 add name DBConnectionString connectionString Data Source ourServer Initial Catalog ourDB P
  • 收到“路径‘OPTIONS’被禁止”。 ASP.NET网站异常

    我收到错误System Web HttpException Path OPTIONS is forbidden 自从我们将网站转移到新的服务器设置以来 我无法重新创建该错误 但我每天至少会收到几次有关此异常的电子邮件 有什么想法可能导致此问
  • 更改所选控件的输入语言

    我的应用程序中有一个文本区域 我想以编程方式单独设置文本区域的输入语言 而不影响其他控件 不幸的是 您的程序无法完成此操作 用户需要使用 Unicode 键盘或输入法编辑器 IME 由于您使用的是 C Net 平台 因此您的程序已经能够处理
  • 如何从重定向的查询字符串中删除项目?

    在我的基页中 我需要从查询字符串中删除一个项目并重定向 我不能使用 Request QueryString Remove foo 因为该集合是只读的 有没有什么方法可以获取查询字符串 除了该一项 而无需迭代集合并重新构建它 您可以通过处理原
  • 用户 ASP.NET 运行于

    我有点困惑 ASP NET 如何在什么用户下运行 在 iis 7 5 和 6 0 上 一些我不清楚的用户帐户是 网络服务 IUSR AppPool 对不同用户的任何澄清以及安全考虑等都将不胜感激 总之 IIS 5 1 Windows XP
  • 基于 Microsoft Word 模板生成 PDF 文档 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要一个 Word 文档 它是某种模板 收集用户输入以填充该模板中的特定字段 然后生成一个 PDF
  • 从 javascript 调用 HttpHandler

    我有一个简单的页面 带有通过 JavaScript 调用 HttpHandler 的按钮 HttpHandler 获取大量文件并将它们添加到 zip 文件中 完成工作后 zip 文件将添加到 Response 中 此操作可能需要几分钟时间
  • 在 Mac 上开发和测试 ASP.NET 的应用程序 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我开始学习一些asp net 所以我正在寻找一个使用mac 开发asp net 的应用程序 我知道 D
  • 仅在页面加载时执行 Javascript,而不是回发 (SharePoint)

    我正在尝试在 SharePoint 网站上的自定义页面上加载页面时执行一些 JavaScript 它使用当前用户填充人员选择器 问题是代码也在回发时执行 这是我不希望的 因为它会重置人员选择器的任何更改 我尝试过使用if IsPostBac
  • 在 ASP.NET 中动态设置主题

    我有一个连接到不同域的应用程序 我没有复制和修改每个应用程序 而是在硬盘驱动器上使用相同的物理位置 但在 IIS 上使用单独的应用程序池和网站 基本上我想根据主机名更改主题 IE 用户访问 websome com 获取 websome 主题
  • 如果浏览器在 asp .net 中关闭,请从浏览器中注销?

    我的要求有点复杂 用户正在使用 Web 浏览器访问数据库 而在访问数据库时 如果用户关闭活动页面而不是注销会话 该会话需要自动注销 有人可以指导我如何做这个吗 我在母版页中使用了jquery onbeforeunload 我收到消息离开页面
  • 获取 SignalR hub 内的完整 URL

    我正在使用 SignalR 开发一个用户跟踪解决方案 作为学习 SignalR 的有趣项目 用于 ASP NET MVC 应用程序 目前我可以跟踪登录的用户以及他们在特定页面上停留的时间 如果他们移动到另一个页面 我也会跟踪该页面 并且 S
  • 在 .NET 中记录 StackOverflowException

    最近 我的 NET 应用程序 asp net 网站 中出现了堆栈溢出异常 我之所以知道该异常是因为它出现在我的 EventLog 中 我知道 StackOverflow 异常无法被捕获或处理 但是有没有办法在它杀死您的应用程序之前记录它 我
  • 向特定客户端发送消息以及消息发送用户

    我是 SignalR 的初学者 我创建了一个基于 SignalR 的基本聊天应用程序 我面临的问题是我想向特定客户端以及发送消息的用户发送消息 这个怎么做 我知道要向特定客户端发送消息 我们可以这样做 Clients Client Cont
  • ASP.NET 更改模板字段中 Gridview 单元格中的文本和颜色

    我在 ASP net 中有 Gridview 显示数据 根据数据 它会根据单元格的值更改颜色和文本 当列不是模板字段时 这可以正常工作 WORKS WHEN IS NOT A TEMPLATE FIELD if e Row RowType
  • 基于网络的应用程序中的图表

    可使用 ASP NET 在网页上显示图表的各种图表工具有哪些 我了解 Dundas 和 Infragistics 等商业工具 我可以用谷歌搜索这个 但我想知道参与者使用过的各种工具 任何可用的免费图表工具也欢迎提及 如果您不介意使用 Fla
  • 使用 Kentor.AuthServices.StubIdp 作为生产 IDP

    我正在尝试在我的应用程序中实现 IDP SAML2 服务器 鉴于我的应用程序拥有所需的所有数据 我不希望我的任何合作伙伴要求我们的客户在他们这边注册 我对 SAML2 协议不是很熟悉 我找到了这个项目Kentor AuthServices
  • 同时从2个表中删除?

    我正在使用 asp net 和 sql 服务器 我有 2 个表 类别和产品 在产品表中 我的categoryId 为FK 我想要做的是 当我从类别表中删除类别时 我希望该类别中的所有产品都将在产品表中删除 如何才能做到这一点 我更喜欢使用存
  • 如何使用 ViewBag 创建 BaseController

    我需要执行以下操作 我已经准备好一些控制器并正在运行 但现在我想创建一个BaseController 我的每一个Controllers应该像这样继承它 public class MySecondController BaseControll
  • ASP.NET Click() 事件在第二次回发时不会触发

    我有一个 ASP NET Web 表单 我第一次提交表单时 会引发 提交按钮单击 事件 表单返回到浏览器时可能会出现验证错误 或者可以选择使用新值再次提交表单 当再次提交表单时 提交按钮单击 事件永远不会触发 Page Load 触发 但按

随机推荐

  • 当我在 OS X Mavericks 上运行 mvn 时,出现以下错误:无法运行程序“/bin/sh”:错误=2,没有这样的文件或目录

    我在 MacBook Pro 上运行 OS X Mavericks 我安装了maven 3 0 5 当我运行 mvn 时 收到以下错误消息 Error while executing process Cannot run program b
  • 如何以编程方式将 GPO 设置为未配置或禁用

    我正在寻找一种编程解决方案 其效果与在 GPOE 中设置 配置 Windows NTP 客户端 状态相同Administrative Templates gt System gt Windows Time Service gt Time P
  • 如何在c#.Net中创建透明面板

    我在 Windows 窗体上有一个面板 面板内有几个控件 我可以让面板完全透明吗 它应该给人一种控件直接放置在 Form 上的感觉 如果您转到 BackColor 属性 并将选择器更改为 Web 则第一个选择是 透明 至少在我的 VB ID
  • 播放音频文件的c程序

    你能给出一个用C语言播放音频文件的示例代码 以及需要哪些头文件吗 我对这个概念很陌生 我有兴趣学习这个 您可以使用 PortAudio 库 PortAudio 是一个免费 跨平台 开源的音频 I O 库 它可以让您用 C 编写简单的音频程序
  • addEventListener() 到不存在的元素?

    我已附上一个click元素上的事件侦听器 例如 document querySelector class name addEventListener click function 该元素可能会也可能不会从服务器端生成 因此 如果服务器生成该
  • git工作流程:每个人都有一个分支,还是每个人都有一个master?

    当多人使用 git 一起工作时 是不是更好 让每个人都在 master 中工作 并在彼此的 master 之间合并 或者 让每个人都在自己有头衔的分支机构工作 在我看来 在 1 的情况下 虽然每个主节点都充当一个分支 但每个人都应该以大多数
  • 在 Monodroid 应用程序中重用 Monotouch 代码

    我目前正在实现一个 Monotouch 应用程序 最终将移植到 Monodroid 该应用程序只是 OData Web 服务的客户端 没有什么太花哨或对性能至关重要的东西 挑战是重用尽可能多的代码 我知道 Monotouch 和 Monod
  • PTVS:如何在一个项目中从第二个项目引用或使用 Python 源代码

    在带有 PTVS 的 Visual Studio 中我有两个分开的Python 项目 其中包含一个名为lib py用作函数库 另一个是使用库中函数的 main 我正在使用一个importmain 中的语句引用库项目中的函数 但出现以下错误
  • 如果编辑器的宽度太小,是否有办法将工具栏按钮包装到 TinyMCE 的下一行?

    我在高级主题中使用 TinyMCE 今天我必须提前指定每个工具栏行中的按钮 theme advanced buttons1 theme advanced buttons2 和 theme advanced buttons3 如果编辑器的宽度
  • PHP 重定向不安全吗?

    嗯 我真的无法确定任何不安全因素 但想知道你是否可以 如果可以 如何修补 修复 代码如下 header Location http example com search POST term POST type 我重定向的网站也在他们这边进行
  • 在新的 Android Studio 3.1 上构建时出错

    我将 Android Studio 更新到 3 1 稳定版本 并在尝试构建项目时收到此错误 起初存在问题DataBinding 我修复了它们 然后我发现了这个问题 org gradle api GradleException Compila
  • 仅从 for 循环中打印一次消息

    我想查找列表元素中是否包含特定字符串 如果找到该字符串 我想打印出 找到字符串 否则 找不到字符串 但是 我想出的代码会多次打印 找不到字符串 我知道原因 但我不知道如何修复它并只打印其中一条消息一次 animals dog mouse c
  • Svg 多边形舍入

    我正在开发一个使用 svg 移动 旋转 缩放功能的应用程序 我正在 Laravel 中编写后端 前端使用 html css javascript 我在网上看到折线可能有某种三次贝塞尔曲线 现在我的问题是 多边形 svg 元素是否可能具有与折
  • Symfony2 路由全局 {_locale} 要求

    我在routing yml 中指定了每个路由中的参数 locale 要求 我认为这一定可以简化这种情况 路由 yml ProjectBaseBundle index pattern locale defaults controller Pr
  • opencv 中体积图像的 3D 图像处理

    我期待 Opencv 中 3D 图像处理的教程 我有 O Reilly 出版的书 这是一本关于 Opencv 中的 2D 图像处理的好书 谁能给我介绍一些 3D 图像处理的资源吗 本问题中的 3D 图像代表体数据 通常指 CT MRI 数据
  • node.js 只输出三个点[重复]

    这个问题在这里已经有答案了 我在 Windows 计算机上安装了 node js 并打开了命令提示符 当我尝试 Hello World 示例时 我得到的唯一输出是三个点 node hello js 我做错了什么吗 node hello js
  • C# 反射:使用字符串类名实例化对象

    我的情况如下 我正在使用 Visual C 2010 Express 开发 Windows 窗体应用程序 当用户登录时 动态地构建一个菜单条 其中包含从数据库表加载的选项 在该表中 我保存 ID 选项名称和表单名称 所以 假设在我的项目中我
  • JSF 中“记住我”的 Cookie

    我有一个登录页面 我想添加 记住我 功能 这样 如果用户注销并再次打开页面 则会加载他的用户名和密码 为此 当用户登录 并选中 记住我 时 我会保存以下 cookie FacesContext facesContext FacesConte
  • 如何打印调用的函数?

    在调试 Python 脚本时 我真的很想知道整个程序的整个调用堆栈 理想的情况是 如果 python 有一个命令行标志 它会导致 Python 在调用时打印所有函数名称 我检查过man Python2 7 但没有找到此类内容 由于此脚本中的
  • ASP.NET 中有没有本地方法可以发出“成功消息”?

    假设您有一个类似 ASP NET ASP DetailsView 的东西来显示和编辑数据库中的单个记录 记录错误情况很简单 您添加验证和验证摘要 当您的更新表单验证失败时 它自然会发出噪音 它显示验证消息和 或验证摘要 不需要任何后面的代码