【问题标题】:Radiobutton in Group (GroupName) are all checkedGroup (GroupName) 中的 Radiobutton 全部被选中
【发布时间】:2010-07-22 04:56:49
【问题描述】:

所以我有三个 RadioButtons,它们不在 RadioButtonList 中,因为我需要在它们旁边添加一些文本框。

我添加了一个 GroupName,在前端它们的行为符合预期。一次只有一个被选中。

但是在代码中,如果我这样做:

RadioButton1.Checked = true;
RadioButton2.Checked = true;
RadioButton3.Checked = true;

我希望只检查最后一个 RadioButton3,因为它们都属于同一个组。不是这种情况。这三个都评估为 true.... 怎么可能?

我必须将它们显式设置为 false...我错过了什么吗?

【问题讨论】:

    标签: asp.net radio-button


    【解决方案1】:

    我认为这是正确的行为,尽管它不是您所期望的。

    考虑一下RadioButton 只是一个CheckBox 具有一些扩展功能以自动提供该专有检查功能。在后台它仍然是一个复选框。查看MSDN的层次结构:

    System.Object
        System.Web.UI.Control
            System.Web.UI.WebControls.WebControl
                System.Web.UI.WebControls.CheckBox
                    System.Web.UI.WebControls.RadioButton
    

    输出包含type="radio"input 的属性checked="checked" 输出的所有项目。例如:

    <input id="rad1" type="radio" name="Test" value="rad1" checked="checked" /><label for="rad1">1</label><br />
    <input id="rad2" type="radio" name="Test" value="rad2" checked="checked" /><label for="rad2">2</label><br />
    <input id="rad3" type="radio" name="Test" value="rad3" checked="checked" /><label for="rad3">3</label>
    

    来自Checked 属性文档:

    选中(继承自 CheckBox): 获取或设置一个值,指示 CheckBox 控件是否为 检查。

    所以Checked 属性就像CheckBox 版本一样,没有包含在同一组中查找其他控件并删除它们的功能,这是有意义的,因为它是一个单一的控件。

    【讨论】:

    • 非常感谢您快速准确的回复伙伴!这就解释了为什么它会以这种方式运行,但我很惊讶它在后端不尊重 GroupName,而在前端这样做......也许我使用了错误的属性......你呢认为我应该使用“已检查”(考虑到它的行为类似于复选框而不是单选按钮 - 即使根据文档)?我期待看到一个名为“Selected”的属性,但它不存在......嗯......
    • @Ev 是的,您应该使用 checked 属性,但您可以轻松编写一个函数来模拟页面级别的服务器端行为,然后自动将所有内容切换为 false,然后设置 RadioButton你想检查一下。
    猜你喜欢
    • 1970-01-01
    • 2017-12-23
    • 1970-01-01
    • 1970-01-01
    • 2017-04-05
    • 2012-06-23
    • 2011-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多