asp.net - View 状态已禁用 - 下拉框不返回值

标签 asp.net viewstate

为了加快我的网站速度,我试图禁用 View 状态,因为我认为我没有在任何地方使用它。我有一个母版页设置,在 default.aspx 中加载了用户控件(使用 LoadControl)。我的典型页面设置是:

Main.master -> Default.aspx -> ControlWrapper.ascx -> MyControl.ascx

我已将 EnableViewState="false"放入我的 Default.aspx 页面中。现在,当我尝试从 MyControl.ascx 中的 DropDownList 读取一个值时,它在发布表单时返回空白。首先,这是为什么?我认为我应该仍然能够从下拉列表中读取值?

然后我尝试在该控件上启用 ViewState,但没有成功。

我还尝试使用 Page.EnableViewState = True;MyControl.ascxPage_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/

相关文章:

c# - 订购时使用的最佳 list

asp.net - VB.Net Web 方法给出 HTTP401 未授权错误

c# - 数据库中的 View 状态?方便吗?

c# - 使用 C# 在 asp.net 中的 Viewstate 中没有获得值(value)?

.net - 为什么在单击按钮时为 DropDownList 触发 SelectedIndexChanged?

asp.net - 修改特定 gridview 列的数据行值

asp.net - @RenderBody() 该怎么办?

asp.net - 何时使用 Page.IsValid?

asp.net - Ajax 控制工具包 AsyncFileUploader 控制和 viewstate/session 问题

extjs - 如何在 JSF 2.0 中使用 ExtJS FormPanel