在ASP.net中访问客户端生成的控件/数据的最佳方法是什么?

时间:2012-03-05 13:38:51

标签: jquery asp.net json repeater

我使用ASP.net和转发器控件创建了一个表单字段表,其中包含来自数据库的数据。

现在用户可以添加行,这些行将使用jQuery添加一个新行到转发器控件(当它呈现时是一个html表。所以我将这些行添加到客户端html表而不是转发器数据源)。

当用户将数据发布到服务器时,我可以直接从转发器访问已编辑的行,但当然,新的jQuery生成的行不会存储在转发器中。

我还看了一下Request.Form变量,但是也只有转发器控件(如果我错误地假设这应该是那样,请给我一些信号)。

我看到的唯一解决方案是将所有行数据存储在json对象中并将其传递给服务器。但是,如果没有使用Javascript发布数据的另一种解决方案,那就太棒了。

解决这个问题的最佳方法是什么?

3 个答案:

答案 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和更多的服务器端脚本。