0

嗨,这似乎是一个奇怪的问题,但这是我的情况:

我有一个表单,用户可以在其中单击并添加包含某些输入字段的行。这是在客户端使用 JQuery 严格完成的。我可以使用 Request.Form 和字段名称访问 asp.net 端回发的输入值,这很好。问题是当页面回发时,这些字段显然消失了。所以我无法进行错误验证或其他事情。我在这里有什么可能的解决方案?当回发发生时,我是否应该在服务器端动态生成相应的字段,并将已经读取的值从客户端生成的字段中放入,以便对用户透明?这是一个关于做事方式的回合吗?有没有更好的办法?

我正在考虑在服务器端添加一个 ajax 方法,该方法将返回验证信息,我可以使用它来表示错误或在客户端没有发回的内容,但导致回发的按钮是“下一个”按钮,如果没有错误,我需要它转到下一页。

我正在寻找某人可能拥有的更多见解以及这些方法的优缺点。

谢谢

4

2 回答 2

1

如果要动态添加输入字段,则必须维护新添加字段的服务器端哈希并在 Page_Init 中重新实例化它们,以便它们在回发之间保持不变。

我认为您的 AJAX 想法很好:

  1. 通过 jQuery 调用服务器端方法(这可以是 .aspx 页面上的静态方法。)服务器端方法将字符串值添加到 Session-stored List<String>
  2. 让方法返回字符串值,即要添加到页面的元素的 ID。
  3. 使用 jQuery 将元素添加到您的页面。
  4. 使用 session 变量在回发时重新实例化您动态添加的字段。

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

于 2009-10-28T15:57:14.483 回答
1

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

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

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

于 2009-10-28T15:57:40.850 回答