default.aspx 页面有一个DropDownList
仅当它不是时才在后面的代码中填充postback
。当选择一个值时,将调用一个方法来填充Literal
与选定的值。它按预期工作。问题是当我将页面设置为不EnableViewState
启用它在DropDownList
仅控制。在这种情况下,当回发时DropDownList
失去其物品。我设置了一个新的 Web 项目来测试这一点。没有母版页可以使其变得更简单。
默认.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>
默认.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 不起作用?
在已删除答案的帮助下找到了答案。被删除的答案是错误的,只是因为它不完整。有了这个提示我发现ViewStateMode 属性页 http://msdn.microsoft.com/en-us/library/system.web.ui.control.viewstatemode.aspx.
总结一下它是为了禁用所有控件的 ViewState 并仅为所选控件启用它:
- 设置页面和所有控件的
EnableViewState
财产给true
。这是默认的,所以不需要写任何东西
- 设置页面
ViewStateMode
to Disabled
- Set
ViewStateMode
to Enabled
在您想要启用 ViewState 的控件中
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)