我使用ASP.net和转发器控件创建了一个表单字段表,其中包含来自数据库的数据。
现在用户可以添加行,这些行将使用jQuery添加一个新行到转发器控件(当它呈现时是一个html表。所以我将这些行添加到客户端html表而不是转发器数据源)。
当用户将数据发布到服务器时,我可以直接从转发器访问已编辑的行,但当然,新的jQuery生成的行不会存储在转发器中。
我还看了一下Request.Form变量,但是也只有转发器控件(如果我错误地假设这应该是那样,请给我一些信号)。
我看到的唯一解决方案是将所有行数据存储在json对象中并将其传递给服务器。但是,如果没有使用Javascript发布数据的另一种解决方案,那就太棒了。
解决这个问题的最佳方法是什么?
答案 0 :(得分:1)
IMO - 您应该仅为更改/新行使用ajax帖子。
你不需要发布页面。 当你使用json使用ajax发送时 - 你应该构建一个json对象,它将包含新的/已编辑的行的信息,服务器(使用ashx)可以更新数据库。
请注意没有刷新页面。
P.S。你应该更新行数 - 来自ashx响应的回复。
答案 1 :(得分:0)
我不确定您是否能够使用jQuery和asp.net严格执行此操作。您可以使用UpdatePanel
。否则ViewState
可能会让你感到悲伤。
答案 2 :(得分:0)
好的,我必须说:只需访问Form.Request数据即可。重要的是,当您在客户端生成新字段时,必须为所有表单字段设置新的和不同的名称属性值,因为Request.Form包含按名称值分组的字段值。如果您正在生成新行,就像我对另一行的clone()所做的那样,它们将是相同的,如果您不更改它们,则无法在Request.Form中看到它们。
另一种解决方案是将所有表单数据保存在JSON对象中,并将其保存到隐藏字段。在服务器端,您可以轻松地反序列化JSON对象(可能首先需要JSON库)并访问您的数据。不需要AJAX请求。
我想说,最好的方法是JSON Object方式。我使用Request.Form来编写更少的Javscript和更多的服务器端脚本。