在回发之前是否有viewstate事件?

时间:2012-05-16 01:54:51

标签: asp.net postback viewstate listboxitems

请考虑以下事项:添加到客户端上的文本框的文本值将添加到回发时的viewstate(因此当页面重新加载时,该值仍然存在于文本框中)。

为什么当我通过jquery将listbox1中的值移动到listbox2时,listbox2中的项目不会添加到viewstate。 (注意:在POST之前选择项目,并且在回发时通过request.form.getvalues(“listbox2”)在服务器上提供listbox2中的值.getvalue(index).tostring())

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

1 个答案:

答案 0 :(得分:3)

  

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

此声明不正确。在回发中保留TextBox服务器控件的值,因为浏览器在发布数据中发送它,并且在回发时TextBox将值从发布数据复制到其Text属性。您不需要查看状态,因为您可以通过设置EnableViewState="False"进行验证。 (我在此假设TextBox可见且已启用;否则,浏览器不会在发布数据中发送其值,并查看状态需要保留该值。)

  

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

对于多选ListBox服务器控件,浏览器会在发布数据中发送每个所选项的值。在回发时,ListBox会查看帖子数据中的每个值,搜索其Items集合中的相应项目,并将该项目的Selected属性设置为{{1 }}。它没有将未识别的值添加到True集合中;相反,如果启用了事件验证,则会抛出"无效的回发或回调参数"例外。同样,不涉及视图状态。