假设您在ASP.NET中有一个页面,其中使用JavaScript / jQuery修改DOM的值是有意义的,这些值最终将由提交时服务器读取。例如,您有一个允许最终用户添加/删除对象的表单(例如健康保险表单上的受抚养人或贷款申请表上的资产)。
有哪些方法可以确保在提交信息后服务器检测到并检索这些项目?
我已经尝试了一些工作的东西,但它们似乎都不完美,所以我想看看社区提供的东西。
另外,我不是在寻找避免动态DOM元素的建议(比如使用向导等)。我特意尝试使用动态创建的DOM元素来改进我的技术。
答案 0 :(得分:2)
有两种方法可以做这样的事情:
首先:仅发布有关提交的信息。只要您向DOM中的每个元素添加name
和id
属性,每个元素都会在Request.Form
中表示,因此您可以轻松地遍历此集合。
我倾向于使用insurance_row_1
,insurance_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应该很快处理这个问题。