【发布时间】:2010-09-27 12:05:12
【问题描述】:
我有一个模板化控件(中继器),列出了一些文本和其他标记。每个项目都有一个与之关联的单选按钮,使用户可以选择中继器创建的项目之一。
转发器写入单选按钮,设置其 id 和生成的名称,使用默认的 ASP.NET 命名约定,使每个单选按钮成为一个完整的“组”。这意味着所有单选按钮都是相互独立的,不幸的是,这再次意味着我可以同时选择所有单选按钮。单选按钮具有用于设置通用名称的巧妙属性“组名”,因此它们被组合在一起,因此应该相互依赖(所以我一次只能选择一个)。问题是 - 这不起作用 - 转发器确保 id 和名称(控制分组)不同。
由于我使用了中继器(可能是列表视图或任何其他模板化数据绑定控件),我无法使用 RadioButtonList。那我该怎么办?
我知道我以前遇到过这个问题并解决了它。我知道几乎每个 ASP.NET 程序员都必须拥有它,那么为什么我不能 google 并找到解决问题的可靠方法呢?我遇到了通过 JavaScript 强制分组的解决方案(丑陋!),甚至将单选按钮作为非服务器控件处理,迫使我执行 Request.Form[name] 来读取状态。我还尝试在 PreRender 事件上覆盖 name 属性 - 不幸的是,拥有页面和 masterpage 再次覆盖此名称以反映完整的 id/name,所以我最终得到了相同的错误结果。
如果您没有比我发布的更好的解决方案,仍然非常欢迎您发表您的想法 - 至少我会知道我的朋友 'jack' 是正确的,关于 ASP.NET 有时是多么混乱;)
【问题讨论】:
-
见:BUG: Radio Buttons Are Not Mutually Exclusive When Used in a Repeater Server Control。这简直太疯狂了……这是自 1.0 框架以来的一个错误,它的影响如此之大。我需要继承单选按钮并重写几个方法以使其工作(对于我当前的 ASP.NET 版本)。什么给了?
标签: asp.net radio-button