【发布时间】:2013-08-06 10:30:59
【问题描述】:
如果我在我的页面上设置:EnableViewState="true" ViewStateMode="Disabled" - 那么 - 页面的 Viewstate 被禁用(除非覆盖...)
然后,尝试读取(假设控件已在上次转储中填充到屏幕并选择了一个值):
MyDDL.SelectedValue 将产生""
这是因为禁用了视图状态:
但我的问题是更高层次的:
-
如果是关于表单值(我仍然可以从
李>Request.Form[MyDDL.UniqueID]获得) - 我们谈论的是不需要任何东西来保存其值的输入。 为什么名为 (
SelectedValue) 的DropDownList属性依赖于 ViewState ?
附言TextBox onchangeevent 确实依赖于视图状态,尽管控件是一个输入(不需要视图状态) - 它保存文本的值,然后在回发时进行比较。但它只依赖于视图状态设置 onchange 事件(和自动回发)
【问题讨论】:
-
那么文本框的值不依赖于视图状态,你可以禁用视图状态,你仍然会得到文本框的值,它的值来自 IPostBackDataHandler 。 Request.Form[""] 仅在您使用 POST 方法提交数据时有效,考虑到用户由于验证错误或任何错误导致您的表单无法在该事件中发布而无法提交从 Request.Form[""] 获取您的值。
-
@surajsingh 我已经知道了。我的问题仍然存在。
-
希望我现在走在正确的轨道上,我刚刚使用 listitems 创建了一个下拉列表,即使在禁用 ViewState 后它也会保留状态。我仍然需要检查通过数据库表限制的下拉列表,让我们看看它们是否保留了它们的状态,我能得到任何答案。
-
@surajsingh 不,你不是。你没有使用 !IsPostBack
-
即使在之前的试验中,我也不必使用 IsPostBack,因为我使用 listitems 使用硬编码值。