我正在使用C#和.NET 4(虽然根据公司政策,我们从不使用任何ASP控件,只使用HTML输入,因此我们的页面与Rails或PHP页面并没有太大差别)。
我的页面需要根据表单上其他输入中的值,生成一些AJAX请求来填充一些<select>
。 AJAX请求仅转到返回从数据库检索的<option>
的简单ASPX页面。当用户提交表单并进行一些验证并失败时,我仍希望保留其输入中的值。我目前在page_load函数中所做的是将所有POST请求的表单值存储在一个对象中,然后在页面上重新选择它们。问题是,我必须在页面加载时重新运行我的所有AJAX请求,以便我可以填充<select>
以重新选择用户在帖子中提交的内容。
在POST后页面重新加载后,立即生成如此多的AJAX请求是不可取的。有没有更好的方法可以保存所有<option>
,以便我不必在页面重新加载后进行所有这些AJAX调用?
答案 0 :(得分:0)
如何在发布之前将选项值保存在隐藏输入中,这样如果发布的表单没有通过服务器端验证,您将能够在Request.Form对象中获得选项数据,并且您将能够重新填充使用这些值控制服务器并使用某种if()条件来防止在返回的页面上使用AJAX函数。
答案 1 :(得分:-1)
我也遇到了同样的问题。对我有用的解决方案是:为页面启用viewstate为true,如果不是页面,我们可以只对列表控件执行相同操作。然后,即使发生某些服务器端错误,列表控件也将保留其值。
同一问题的另一个解决方案是:
每当ajax响应出现时,我们可以将它保存在隐藏输入中(如上所述),但是我们不需要为它们提供太多隐藏输入,只需使用1个隐藏输入变量即可处理。 每当ajax响应到来时,我们需要追加相同隐藏输入字段的值(为了区分我们需要在该值中附加列表框的名称),然后我们可以轻松地绑定控件而不再发送ajax调用。