3

考虑以下情况:添加到客户端文本框中的文本值在回发时添加到视图状态(因此当页面重新加载时该值仍然存在于文本框中)。

当我通过 jquery 将值从 listbox1 移动到 listbox2 时,为什么 listbox2 中的项目不会添加到视图状态。(注意:项目是在 POST 之前选择的,listbox2 中的值在服务器上通过 request.form.getvalues("listbox2").getvalue(index).tostring() 回发时可用)

我不是在找工作,我有。我想知道“为什么”没有添加 listbox2 值。是否为文本框而不是列表框触发了一些事件?只是想更好地了解发生了什么。谢谢!

4

1 回答 1

3

添加到客户端文本框中的文本值在回发时添加到视图状态(因此当页面重新加载时该值仍然存在于文本框中)。

这种说法是不正确的。服务器控件的值TextBox在回发中被保留,因为浏览器在发布数据中发送它,并且在回发时TextBox将值从发布数据复制到其Text属性。不涉及视图状态,您可以通过设置来验证EnableViewState="False"。(我在这里假设TextBox是可见并启用的;否则,浏览器不会在发布数据中发送其值,并且需要视图状态保留该值。)

当我通过 jquery 将值从 listbox1 移动到 listbox2 时,为什么 listbox2 中的项目不会添加到视图状态。

对于多选ListBox服务器控件,浏览器会在发布数据中发送每个选定项目的值。在回发时,ListBox查看 post 数据中的每个值,在其集合中搜索相应的项目Items,并将该项目的Selected属性设置为True。它不会将无法识别的值添加到Items集合中;相反,如果启用了事件验证,则会引发“无效的回发或回调参数”异常。同样,不涉及视图状态。

于 2012-05-16T02:20:07.943 回答