Проблема с состоянием вида при первом выборе элемента в выпадающем списке - PullRequest
3 голосов
/ 09 июня 2011

На моем веб-сайте ASP.NET 4.0, который использует главные страницы, я отключил viewstate sitewide в web.config:

<pages enableViewState="false" />

и пытаюсь включить его только в случае крайней необходимости.

Я столкнулся с проблемой с элементом управления DropDownList (без привязки к данным, только жестко закодированные элементы):

    <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" onselectedindexchanged="DropDownList1_SelectedIndexChanged" Width="150px" ViewStateMode="Enabled" EnableViewState="True">
        <asp:ListItem>Chocolate</asp:ListItem>
        <asp:ListItem>Strawberry</asp:ListItem>
        <asp:ListItem>Vanilla</asp:ListItem>
    </asp:DropDownList>

Несмотря на то, что я включил состояние просмотра для этого конкретного элемента управления, существует проблема с выбором первого элемента:

enter image description here

    protected void DropDownList1_SelectedIndexChanged (object sender, EventArgs e)
    {
        TextBox1.Text = (sender as DropDownList).SelectedValue;
    }

Ожидаемый результат: при выборе «Шоколад» TextBox1 будет отображать «Шоколад». Но я вижу, что TextBox1 изменяется только при выборе Strawberry или Vanilla. В приведенном выше примере я выбрал клубнику, а затем шоколад.

Другими словами, DropDownList SelectedIndexChanged не запускается, когда выбран первый элемент, но запускается, когда выбирается второй или третий.

Вот настройки свойств для DropDownList:

enter image description here

Я попробовал тот же код, начиная с пустого проекта, и страница работает, как ожидалось. (Выбор первого элемента вызывает событие).

Заранее спасибо за любые предложения.

Ответы [ 2 ]

1 голос
/ 09 июня 2011

Похоже, вы не можете установить <pages enableViewState="false" /> в web.config или в любых директивах страницы, чтобы свойство ViewStateMode работало.

В основном EnableViewState=false переопределит все и все ViewStateModesettings.

Похоже, что на данный момент нет способа установить свойство ViewStateMode в web.config, поэтому вам придется удалить все свойства EnableViewState из вашего приложения.и установите для свойства ViewStateMode значение Disabled во всех директивах вашей страницы.

0 голосов
/ 09 июня 2011

Думаю, я знаю, что вы говорите.Вы хотите показать значение по умолчанию из выпадающего списка при загрузке страницы.Если вы хотите, вы можете сделать это при загрузке dropdownlist.

protected void DropDownList1_Load(object sender, EventArgs e)
    {
        TextBox1.Text = (sender as DropDownList).Text;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...