【问题标题】:Find what Elements were added by Javascript查找 Javascript 添加的元素
【发布时间】:2013-10-07 08:40:41
【问题描述】:

我有一个 ASP 站点,它使用户能够添加标签元素。我不知道添加了多少标签或它们有哪个 ID。我只知道,他们将在 Panel pnl_Added 内。用户添加完所有标签后,按下发送按钮进行更新。

所以,现在我在我的服务器上,等待这个回发,但我不知道在哪里、何时以及如何找出哪些元素被添加到 pnl_Added。有人可以帮帮我吗?

我尝试过类似的方法:

protected void Page_Load(object sender, EventArgs e)
{
[...]
for (int i = 0; i < pnl_Added.Controls.Count; i++)
        {
            [...]
        }
[...]
}

但我认为加载 ViewState 为时已晚?这可能吗?

我正在使用 VS 2013、ASP c# 和 .Net Framework 4。

【问题讨论】:

  • 你能展示你的代码吗?
  • 您使用的是 asp.net 还是只使用 asp?我很困惑,因为您标记了 asp-classic 但提到了 asp c#。
  • 抱歉打错了标签!

标签: c# javascript asp.net .net-4.0 webforms


【解决方案1】:

在服务器上,控件树不是从实际的客户端 HTML 创建的。实际上,除了input 标记提交表单范围内的值之外,服务器对客户端 HTML 一无所知。一般来说,Page_Load 方法中可用的所有控件,都是在服务器端从aspx 文件标记创建的。

要实现您的场景,您需要为每个标签添加隐藏字段,从客户端添加并将标签的内部文本保存到隐藏字段的值中。然后你会得到这些标签文本如下:

var labels = Request.Form["hiddenField's name"] as string[];

【讨论】:

  • 这不是我希望找到的直接方式。但效果很好。非常感谢!
【解决方案2】:

您应该更深入一点并从Request 变量中获取添加的元素,因为控件 pnl_Added 不知道它们,因为没有回发。

类似这样的:

Request.Form["field_id"]

我建议在调试模式下运行页面,查看 Request.Form 集合并找到您需要的内容。您应该在那里看到您的标签元素。

【讨论】:

  • 您需要提供添加元素的代码,我想是在客户端吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-27
  • 2018-07-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多