- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果我在我的页面上设置:EnableViewState="true" ViewStateMode="Disabled"
- 然后 - 页面的 Viewstate 被禁用(除非覆盖...)
然后,尝试读取(假设控件已在最后一次转储中填充到屏幕并选择了一个值):MyDDL.SelectedValue
将产生 ""
那是因为禁用了 viewstate :
但我的问题是更高层次的:
Request.Form[MyDDL.UniqueID]
获得) - 我们正在谈论一个不需要任何东西来保存其值的输入。 DropDownList
名为 (SelectedValue
) 的属性依赖于 ViewState 吗? 最佳答案
SelectedValue
依赖 ViewState
因为在 PostBack 上它会重建它的 ListItems
来自 ViewState
然后在 DropDownList
上设置所选值来自 Request
目的。
它没有占用Request
值为SelectedValue
直接地。这又是因为,ASP.Net 可以检查是否发布了 DropDownList
在客户端没有被篡改。它首先反序列化 ViewState
中的原始项目。 .然后它会找到 Request
项目中的值并设置其Selected
属性为 true
.只有现在,SelectedValue
属性可用。 (或 SelectedIndex
就此而言)。它应该能够触发 SelectedIndexChanged
现在事件。
这也是不需要绑定(bind)DropDownList
的原因。再次在 PageLoad
.列表项自动从 ViewState
中检索。 .
如果 ViewState
被禁用,则 ViewState
中将没有原始列表项并将为空。因此,它将无法将任何项目标记为选中。因此 SelectedValue
将为 0 或 SelectedItem
将为空。我认为 SelectedIndexChanged
事件也不会触发。为了在这种情况下工作,需要完成数据绑定(bind),最好是在 init
上。 .
但是,有一些解决方法。
完整引用:http://msdn.microsoft.com/en-us/library/ms972976.aspx
编辑 :(在 Op 的评论之后)
跟随页面生命周期查看SelectedValue
依赖 ViewState
:
阶段 1 初始化:构建控制层次结构。如果 DropDownList 在此处绑定(bind)或已以声明方式添加 ListItems,则在此处填充 List。
第 2 阶段加载 ViewState:在 PostBack 上,此处验证 ViewState 并将其加载到 DropDownList 中。有没有 SelectedValue
这里。
第 3 阶段加载回发数据:这里是 Request
取值(来自表单请求),然后应用于控件。在这种情况下 DropDownList
现在套 SelectedValue
来自收到的Request
对象值,内部实现是这样的:
string selectedValue = HttpContext.Current.Request.Form[DropDownList_Id];
Items.FindByValue(selectedValue).Selected = true;
SelectedValue
属性为0。这与属性的内部实现无关。
SelectedValue
属性将返回正确的值。
Request
在项目集合中找不到表单值,再次
SelectedValue
将无效。
OnSelectedIndexChanged
如果在第 3 阶段更改了索引,则会触发 DropDownList 事件。
SelectedValue
在第 3 阶段依赖于 ViewState。当然,如果控件是适当的数据绑定(bind),那么它就不会依赖 ViewState 作为推论。
SelectedValue
依赖 ViewState 来确保在设置之前已填充项目集合。数据绑定(bind)/重新绑定(bind)只是确保填充项目集合的另一种方法。
关于asp.net - 为什么 DropDownList.SelectedValue 依赖于 viewstate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18077686/
我有两个 ASP.Net 下拉列表,其中的值相同,根据用户输入的不同数据从数据库填充,并且每次都有动态大小。我的情况是,我希望禁用第二个下拉列表中已在第一个下拉列表中选择的任何选项。我做了一些谷歌,大
我有两个相关的模型。 public partial class bs_delivery_type { public decimal delivery_id { get; set; }
我需要能够根据先前 DropDownList 的选择来填充 DropDownList。 我注意到在 SO 上有很多类似的主题,不幸的是,我需要在不使用 AJAX 调用的情况下完成此操作,并且需要在 M
我无法在 ASP.NET MVC 应用程序的 Create View 中获得我们想要的功能。 我们的 Create View 中有两个 DropDownList。 一个是类别选择,第二个应该根据第一个
这个问题在这里已经有了答案: Easiest way to create a cascade dropdown in ASP.NET MVC 3 with C# (1 个回答) 关闭 9 年前。 加
有什么区别 DropDownList.ClearSelection(); 和 DropDownList.SelectedIndex = -1; 在使用下拉列表时? 编辑:我知道 MSDN 上提供的这些
这是一个常见问题,但我不知道如何使用 KendoUI 小部件和 Javascript 来解决它。我有一个 KendoGrid,其数据源来自对 Web 服务的 AJAX 调用。数据绑定(bind)到列。
我有一组问题供用户选择,其中一些问题有第二个选项列表可供选择。我的目标是有一个下拉列表,如果您选择其中一个在其 SecondaryChoiceList 中有项目的选项,那么第二个列表将出现在初始下拉列
我有一组问题供用户选择,其中一些问题有第二个选项列表可供选择。我的目标是有一个下拉列表,如果您选择其中一个在其 SecondaryChoiceList 中有项目的选项,那么第二个列表将出现在初始下拉列
我正在使用带有 ajax 工具包的 asp.net 3.5。 问题:我有一个自定义控件,在更新面板中有两个下拉列表。第一个 DDL 具有属性 AutoPostBack="true" 并且在选择时填充第
我在我的一个 ddl 上选择了其他选项,并且成功获得了该值,但同时我想在代码中的其他 ddl 上获得选项。我怎样才能获得其他 ddl 选项....?我在这里放置了我的问题的代码示例: (no
我们在我们的应用程序中使用自定义表单控件。当我们尝试在这个自定义表单控件中使用 asp dropdownlist 控件时,我得到了这个给定的异常。但是,当我使用 asp 文字控件时,我们不会收到此错误
我有两个 asp.net 下拉列表,我想用 Javascript 操作客户端。这两个下拉菜单位于模态打开内: function() 当 dropdown1.value == "me"时我想要禁用 dr
我有一个 WebForms 页面,上面有两个 DropDownList 控件,它们都包含 60-80 度的温度范围,一个用于加热,另一个用于冷却。它们在 .aspx 中声明为: 每个列表的值都使用
抱歉这个愚蠢的问题,我以前使用过 MVC,但以前从未做过这样的事情。 好吧,假设我正在实现一个门票系统,用户可以在特定时间和巴士上预订门票。 在“预订”页面中,我有2个DropDownList,其中一
我有一个 activeDropDownList 类型的字段,用户在其中选择所需的月份,并且 View “mobilizer”处理所选月份的大量查询。 但是,渲染页面后,activeDropDownLi
我试图禁用列表框中的多选,但是当我调用removeAttr('multiple')时,它会将我的列表框变成下拉列表。我不需要下拉菜单,我想保留列表框。我该如何调整才能实现这一目标?谢谢。 @Ht
我需要在 WinForm 上显示一些韩文文本。文本在我的 ListBox 控件中显示良好。相同的文本不会显示在我的 DropDownList 控件中。两个控件的字体均为 Arial 8pt。两个控件的
我有一个简单的问题。我有一个 dropDownList,我试图用存储过程中的 id 填充它。然而它似乎不起作用。这是我的下拉列表: Select new CaseFile:
绑定(bind)后下拉菜单显示以下值: 第一优先级低 第二优先级中 第三优先级高 每次回发后下拉列表显示以下值: 第一优先级低 第二优先级中 第三优先级高 第一优先级低 第二优先级中 第三优先级高 这
我是一名优秀的程序员,十分优秀!