为了加快我的网站速度,我试图禁用 View 状态,因为我认为我没有在任何地方使用它。我有一个母版页设置,在 default.aspx 中加载了用户控件(使用 LoadControl)。我的典型页面设置是:
Main.master -> Default.aspx -> ControlWrapper.ascx -> MyControl.ascx
我已将 EnableViewState="false"放入我的 Default.aspx 页面中。现在,当我尝试从 MyControl.ascx 中的 DropDownList
读取一个值时,它在发布表单时返回空白。首先,这是为什么?我认为我应该仍然能够从下拉列表中读取值?
然后我尝试在该控件上启用 ViewState,但没有成功。
我还尝试使用 Page.EnableViewState = True;
在 MyControl.ascx
的 Page_Init
事件上启用 View 状态,但那没有帮助。
我想我对 View 状态有些误解,有人可以指出正确的方向吗?
p.s 我不知道此信息是否相关,但我在 Page_Load 事件中动态添加了 DropDownList 的内容。 (考虑一下,这可能是问题所在 - 现在将对此进行测试)。
谢谢。
最佳答案
在 View 状态关闭的情况下,您在 Page_Load 中加载的值在您回发时不再出现在列表中(直到您显然重新加载它们)。如果您想在没有 View 状态的情况下工作,则需要根据 Request.Form 中的值设置所选项目。
protected void Page_Load(object sender, System.EventArgs e)
{
ddlItems.Items.Add(new ListItem("test1", "test1"));
ddlItems.Items.Add(new ListItem("test2", "test2"));
ddlItems.Items.Add(new ListItem("test3", "test3"));
if (Page.IsPostBack)
ddlItems.SelectedValue = Request.Form["ddlItems"];
}
关于asp.net - View 状态已禁用 - 下拉框不返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5622859/