default.aspx ページには、DropDownListではない場合にのみ分離コードに入力される がありますpostback。値が選択されると、選択された値で a を満たすメソッドが呼び出さ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>
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 が機能しないのはなぜですか?