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 が機能しないのはなぜですか?