gpt4 book ai didi

c# - 如何识别和存储文本框的更改详细信息并在 asp.net 中的 java 脚本中调用它

转载 作者:行者123 更新时间:2023-12-02 20:18:17 27 4
gpt4 key购买 nike

我有一个用户控件,正在页面中调用。伪代码如下主页

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>

<%@ Register TagPrefix="test" TagName="newcontrol" Src="~/UserControl.ascx" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">
<title></title>
</head>

<body>
<script id="testscript" language="javascript" src="CheckJavaScript.js"> </script>
<form id="form1" runat="server">
<div>
<test:newcontrol ID="testingNewControl" runat="server" />
<asp:Button ID="btnSave" runat="server" Width="100" OnClientClick="CallingScript()" />
</div>
</form>

</body>
</html>

用户控制

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="UserControl.ascx.cs"
Inherits="WebApplication1.UserControl" %>
<div id="usertest" runat="server">
<table>
<tr>
<td>
<asp:Label ID="label1" Text="Name" runat="server">
</asp:Label>
<asp:TextBox ID="text1" runat="server"></asp:TextBox>
</td>
</tr>
</table>
<table>
<tr>
<td>
<asp:Label ID="label2" Text="City" runat="server">
</asp:Label>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</td>
</tr>
</table>
</div>

当用户点击“保存”按钮时,如果文本框的值发生任何变化,我想调用 JavaScript。

如何识别文本框值是否已更改。此外,我在用户控件中只显示了两个文本框,而实际上会有很多文本框。我必须将警报显示为“textbox1 中的值已更改”或“textbox2 中的值已更改”

我该如何继续。

最佳答案

对于通用解决方案,您需要一个跟踪旧值的解决方案。解决方案的典型概要是

  1. 有一个隐藏字段来存储要跟踪的控件的旧值。您需要开发一些方案来序列化/反序列化名称/ID-值对。它可以像冒号分隔的名称/值对的逗号分隔列表一样简单。不过,您可以考虑 JSON。
  2. 在服务器端有一个代码,对于给定的父控件,递归地循环所有子控件并将其原始值(以及名称/ID)存储到隐藏字段中。出于性能原因,您可以接受要保存的控件类型(或者让您的逻辑根据控件的类型跳过控件)。
  3. # 2 仅需要在显示页面时完成,即它应该在回发中发生。但是,当然,您可能会遇到这样的情况:切换面板的可见性,然后您想要跟踪面板中的控件。因此,为了处理这种情况,您实际上需要创建一个名称/值对的字典,以便在页面生命周期中存储控件。您可以注册用于跟踪的控件,也可以从跟踪中取消注册它们。
  4. 拥有一个客户端(java 脚本)启动代码,该代码将从隐藏字段反序列化、构造名称-值字典并将更改事件处理程序附加到正在监视的控件以检查原始值。
  5. 在服务器端的回发周期中,原始值必须恢复到字典中,以便服务器代码可以注册/取消注册它们。有时,这些值需要重新注册 - 例如,您的原始值是“A”,它被更改为“B”并保存(但 UI 在编辑模式下仍然保持打开状态),因此您可能需要重新注册将原始值注册为“B”。

就我而言,整个解决方案是在基页级别打包的。因此页面开发人员要做的就是翻转标志以指示控件跟踪并通过注册/取消注册来识别控件 - 基页将负责构建原始值字典、注册隐藏字段、注入(inject) js 脚本调用等。/p>

关于c# - 如何识别和存储文本框的更改详细信息并在 asp.net 中的 java 脚本中调用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5928132/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com