单选按钮列表选择的不连贯回发行为

Incoherent postback behavior with radio button list selection

我有一个:

如果我单击“取消选择”,然后单击“保存”,则会显示第一项的索引 0。这种看似错误的行为是由重新加载页面并根据默认设置选择的回传引起的。

但是:如果我现在选择列表的 Item2,然后单击保存,我希望回传将 RadioButtonList 重置为其初始值时出现相同的行为。但是显示了 List-Item2 的索引 1。

所以 "not-Selected" 在回发时被否决了,而 "selected" 不是! 真的是这样吗?令人困惑且难以处理。

    <asp:RadioButtonList ID="RBL_SelectType" runat="server">
        <asp:ListItem Text="Choice1" Value="0" Selected="True" />
        <asp:ListItem Text="Choice2" Value="1" />
    </asp:RadioButtonList>

    <asp:LinkButton ID="LB_Reset" runat="server" OnClick="Unselect">unselect RBL</asp:LinkButton>
    <asp:LinkButton ID="LB_Save" runat="server" OnClick="Save">Save</asp:LinkButton>

    <asp:Label runat="Server" ID="Message" />

与:

    protected void Save(object sender, EventArgs e)
    {
        Message.Text = "Index = " + Convert.ToString(RBL_SelectType.SelectedIndex);
    }

    protected void Unselect(object sender, EventArgs e)
    {
        RBL_RBL_SelectType.SelectedIndex = -1;
    }

这是我遇到的问题的解决方案,尽管它没有解释我眼中一直语无伦次的行为;我希望收到更多其他用户对此行为的反馈或确认。

因此,无论何时您需要为 RadioButtonList 设置默认选择,都不要在标记中进行,因为它会在回发后丢失选择 "nothing selected",而应在后面的代码中进行page_load.

protected void Page_Load(object sender, EventArgs e)
{
   if (!Page.IsPostBack)
   {
       RBL_SelectType.SelectedIndex = 0;
   }