RadioButtonList SelectedIndex не изменяется

#asp.net #postback #radiobuttonlist

#asp.net #обратная отправка #radiobuttonlist

Вопрос:

у меня есть простой список переключателей со статическими списками, которые я никогда не меняю. Когда пользователь выбирает радио и нажимает кнопку отправки, выбранный индекс возвращается к -1. Я не использую никаких панелей обновлений, я ничего не менял с помощью ViewState (я пробовал оба: включен и отключен), я пробовал AutoEventWireup true и false, все значения уникальны. Ничего не помогает.

Код страницы:

 <div class="content">
    <div id="registration">
        <asp:Literal runat="server" ID="Literal1" Text="Registration" />
        <asp:Panel runat="server" DefaultButton="UserCreateButton">
            <table class="registration_table">
                <tr><td>
                    <asp:Literal ID="NameLiteral" runat="server" Text='<%$ Resources: Resource, LabelName %>' />
                </td><td>
                    <asp:TextBox runat="server" ID="NameTextBox" autocomplete="off" />
                </td></tr>
                <tr><td>
                    <asp:Literal ID="SurnameLiteral" runat="server" Text='<%$ Resources: Resource, LabelSurame %>' />
                </td><td>
                    <asp:TextBox runat="server" ID="SurnameTextBox" autocomplete="off" />
                </td></tr>
                <tr><td>
                    <asp:Literal ID="UsernameLiteral" runat="server" Text='<%$ Resources: Resource, LabelUsername %>' />
                </td><td>
                    <asp:TextBox runat="server" ID="UsernameTextBox" autocomplete="off" />
                </td></tr>
                <tr><td>
                    <asp:Literal ID="PasswordLiteral" runat="server" Text='<%$ Resources: Resource, LabelPassword %>' />
                </td><td>
                    <asp:TextBox runat="server" ID="PasswordTextBox" TextMode="Password" autocomplete="off" />
                </td></tr>
                <tr><td>
                    <asp:Literal ID="SexLiteral" runat="server" Text='<%$ Resources: Resource, LabelSex %>' />
                </td><td>
                    <asp:RadioButtonList ID="SexList" runat="server" RepeatLayout="Flow" RepeatDirection="Horizontal">
                        <asp:ListItem Text="Not chosen" Value="0" Selected="True" />
                        <asp:ListItem Text="Male" Value="1" />
                        <asp:ListItem Text="Female" Value="2" />
                    </asp:RadioButtonList>
                </td></tr>
            </table>
            <asp:Button runat="server" ID="UserCreateButton" Text='<%$ Resources: Resource, LabelRegister %>' OnClick="OnUserCreate" />
        </asp:Panel>
    </div>
</div>
 

Страница codebehind:

 public new UserCreatePresenter Presenter
{
    get { return base.Presenter as UserCreatePresenter; }
    set { base.Presenter = value; }
}

protected void Page_Load(object sender, EventArgs e)
{
}

public void OnUserCreate(object sender, EventArgs e)
{
    if (Presenter != null)
    {
        Presenter.OnUserCreate(
            NameTextBox.Text,
            SurnameTextBox.Text,
            UsernameTextBox.Text,
            PasswordTextBox.Text,
            SexList.SelectedValue);
    }
}
 

Комментарии:

1. вы привязываете RadioButtonList или страницу в PageLoad?

2. Можем ли мы увидеть остальную часть вашего кода, пожалуйста?

3. Я ничего не делаю в PageLoad или PreInit

4. пожалуйста, отредактируйте свой вопрос и опубликуйте некоторый код, что вы делаете на странице

5. Я добавил больше кода. Для presenter SelectedValue всегда равно 0.

Ответ №1:

Уничтожить OnClick="OnUserCreate"

установите обработчик в Page_init как UserCreateButton.click = new System.EventHandler(OnUserCreate);