asp.net - 回发前是否有 viewstate 事件?

标签 asp.net postback viewstate listboxitems

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

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

我不是在寻找解决办法,我已经找到了。我想知道“为什么”未添加 listbox2 值。是否有一些事件为文本框而不是列表框触发?只是想更好地了解正在发生的事情。谢谢!

最佳答案

A text value added to a textbox on the client is added to viewstate on postback (thus the value is still present in the textbox when the page has reloaded).

这个说法是错误的。 TextBox 服务器控件的值在回发期间保留,因为浏览器在发布数据中发送该值,并且在回发时,TextBox 将值从发布数据复制到其 文本属性。不涉及 View 状态,您可以通过设置 EnableViewState="False" 进行验证。 (我在这里假设 TextBox 可见并已启用;否则,浏览器不会在发布数据中发送其值,并且 View 状态 需要保留该值。)

How come when I move a value from listbox1 to listbox2 via jquery the items in listbox2 are not added to viewstate.

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

关于asp.net - 回发前是否有 viewstate 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10611026/

相关文章:

vb.net - 如何保持页面位置并专注于回发

asp.net - 如何正确处理复合控件中子控件的 View 状态?

jsf - com.sun.faces.numberOfViewsInSession 与 com.sun.faces.numberOfLogicalViews

asp.net - 如何在没有依赖注入(inject)的情况下在 Asp.Net Web Api 2 中使用 AutoMapper 9.0.0?

c# - 当映射字段移动到基类时,NHibernate JOIN 映射失败

c# - ASP.NET Web页面镜像,用绝对路径替换所有相对URL

c# - 用户控件事件处理程序在回发时丢失

c# - asp :button click 上的 ASP.NET 异步回发

c# - 为什么我只*随机*在单个服务器环境中获得 "Validation of viewstate MAC failed"?

c# - ForEach 扩展方法中的多重选择