EnableViewState не работает в DropDownList
Страница default.aspx имеет DropDownList
который заполняется в коде только тогда, когда это не postback
, Когда выбрано значение, вызывается метод, который заполняет Literal
с выбранным значением. Работает как положено. Проблема в том, когда я устанавливаю страницу не EnableViewState
включив его в DropDownList
только контроль В этом случае, когда отправил обратно DropDownList
теряет свои предметы. Я настроил новый веб-проект, чтобы проверить это. Там нет главной страницы, чтобы сделать это проще.
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?
2 ответа
Нашел ответ с помощью удаленного ответа. Удаленный ответ был неправильным только потому, что он был неполным. С этой подсказкой я нашел страницу свойств ViewStateMode.
Подводя итог, нужно отключить ViewState всех элементов управления и включить его только для выбранных:
- Установите и страницу, и все элементы управления
EnableViewState
собственность наtrue
, Это по умолчанию, поэтому не нужно ничего писать - Установить страницу
ViewStateMode
вDisabled
- Задавать
ViewStateMode
вEnabled
в элементе управления, где вы хотите включить ViewState
На моем компьютере я создаю веб-приложение. Результат такой же, как и у вас. Я предполагаю, что когда viewstate страницы ложно,control viewstate не может работать.