default.aspx页面有一个DropDownList
,只有当它不是postback
时才会填充在代码后面。选择值时,将调用一个方法,该方法使用所选值填充Literal
。它按预期工作。问题是当我将页面设置为EnableViewState
仅在DropDownList
控件中启用它时。在这种情况下,当回发时,DropDownList
会丢失其项目。我已经设置了一个新的Web项目来测试它。没有母版页可以简化它。
Default.aspx的:
<%@ Page Title="Home Page" Language="C#" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="WebApplication4._Default"
EnableViewState="false" %>
<asp:DropDownList ID="DDL" runat="server"
OnSelectedIndexChanged="DDL_OSIC"
AutoPostBack="true"
EnableViewState="true">
</asp:DropDownList>
<asp:Literal ID="Literal1" runat="server"></asp:Literal>
Default.aspx.cs:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DDL.Items.Add("red");
DDL.Items.Add("green");
DDL.Items.Add("blue");
}
}
protected void DDL_OSIC(object sender, EventArgs e)
{
Literal1.Text = DDL.SelectedValue;
}
为什么EnableViewState不工作?
答案 0 :(得分:4)
借助已删除的答案找到答案。删除的答案错误只是因为它不完整。有了这个提示,我找到了the ViewStateMode Property page。
总结它以禁用所有控件的ViewState并仅为选择的控件启用它:
EnableViewState
属性设置为true
。这是默认设置,因此无需编写任何内容ViewStateMode
设置为Disabled
ViewStateMode
设置为Enabled
答案 1 :(得分:-3)
在我的计算机中,我创建了一个Web应用程序。结果与您相同。 我猜,当页面视图状态为false时,控制视图状态无法工作。