2009-10-28 33 views
0

你好,这似乎是一个奇怪的问题,但这里是我的情况:动态generting领域的jQuery,也使他们在asp.net服务器端

我有一个表格,用户可以点击并添加包含一定行输入字段。这是严格在客户端使用JQuery完成的。我可以使用Request.Form和字段的名称在asp.net端回发输入值,这很好。问题是当页面回传时,字段显然消失。所以我没有办法做错误验证或其他的东西。我可能的解决方案是什么?我应该在回发时动态生成服务器端的相应字段,并将来自客户端生成字段的已读值添加到用户的透明区域中?这是一个关于做事的方式吗?有没有更好的办法?

我正在考虑在服务器端添加一个ajax方法,它会返回验证信息,我可以用它来表示错误,或者在客户端没有回复的信号,但是导致回发的按钮是“下一步”按钮,如果没有错误,我需要它进入下一页。

我在寻找任何更多的人可能有的见解和利弊的方法。

感谢

回答

1

如果要动态添加输入字段,你将不得不保持新添加字段的服务器端哈希,为了让他们回发之间持久重新实例他们Page_Init。

我觉得你的AJAX的想法是好的:

  1. 呼叫通过jQuery的服务器端方法(这可能是您的.aspx页面上的静态方法。)服务器端的方法添加一个字符串值会话存储List<String>
  2. 让方法返回字符串值,该值是要添加到页面的元素的ID。
  3. 使用jQuery将元素添加到您的页面。
  4. 使用会话变量在回发时重新实例化动态添加的字段。

该方法可以让您在客户端添加字段的速度,并防止动态字段在回发中消失。

+0

这很好,除了我如何在步骤2中生成ID的方法,这将反映在步骤4中重新生成ASP.NET时生成的ID?原因是,我也允许用户删除按钮点击某些行,并且我想保持所有的ids一致,无论是生成客户端或服务器端回发后。 – Riz 2009-10-28 16:10:21

+0

只要您重新实例时在控件上设置了相同的ID,您就不必担心“ASP.NET生成的ID”。 ASP.NET将处理剩下的事情。你将不得不自己想出ID生成逻辑。 – 2009-10-28 16:33:12

1

1)快速和肮脏,你可以使用UpdatePanel,但这会增加一些流量的大小。它将允许您通过发布表格的整个标记来包含验证控件。

2)您可以使用某种CustomValidator或自定义验证方法,并使用Request.Form值。只要你有一些方法来识别字段,你应该可以解决这个问题,但是如果回发失败,你将不得不重新创建场景,因为你会失去这些部分。

3)您可以通过WebMethod调用完成“回发”,并手动处理所有内容。这可能是最干净的方法,因为无论如何,您都可以将传统的WebForms内容与更客户端的模型进行混合和匹配。