在ASP.NET中跟踪动态创建的DOM元素的方法

时间:2010-03-26 12:56:15

标签: asp.net javascript jquery dom

假设您在ASP.NET中有一个页面,其中使用JavaScript / jQuery修改DOM的值是有意义的,这些值最终将由提交时服务器读取。例如,您有一个允许最终用户添加/删除对象的表单(例如健康保险表单上的受抚养人或贷款申请表上的资产)。

有哪些方法可以确保在提交信息后服务器检测到并检索这些项目?

我已经尝试了一些工作的东西,但它们似乎都不完美,所以我想看看社区提供的东西。

另外,我不是在寻找避免动态DOM元素的建议(比如使用向导等)。我特意尝试使用动态创建的DOM元素来改进我的技术。

2 个答案:

答案 0 :(得分:2)

有两种方法可以做这样的事情:

首先:仅发布有关提交的信息。只要您向DOM中的每个元素添加nameid属性,每个元素都会在Request.Form中表示,因此您可以轻松地遍历此集合。

我倾向于使用insurance_row_1insurance_row_2等命名约定。您可以找到所有行,例如Request.Form.AllKeys.Where(k=>k.StartsWith("insurance_row_"))


如果要保存服务器上的每个操作:

在javascript中维护一个状态容器,它将信息保存在某些类似字典的控件中,您可以在其中放置应用程序执行的每个操作,以及服务器是否已处理它们的状态。类似的东西:

var stateContainer = [ 
         { 'put-insurance-row-1', false }, 
         { 'delete-insurance-row-1', false } 
];

向服务器发出AJAX请求以执行此类操作,并使用state-container的密钥来跟踪请求是成功还是失败。成功提交请求后,将状态设置为“true”。请确保按照接收事件的顺序执行此操作,因此请将它们逐个发送到服务器以确保您保持有效状态。

如果某些状态尚未保留,您可以(尝试)阻止关闭浏览器。

答案 1 :(得分:0)

为什么使用客户端代码执行此操作?我会去做回发的路线,并从服务器端代码添加一个控件。内置的ajax updatepanel应该很快处理这个问题。