单选按钮分组asp.net

时间:2012-05-11 04:05:35

标签: c# asp.net radio-button override viewstate

我正在尝试将radiobuttons与groupname属性组合在一起。 它不起作用,因为在渲染时asp.net中的命名约定。

所以我试图继承radiobutton控制并覆盖radiobutton并创建我自己的控件..

它解决了分组问题,但由于某些原因它没有处理视图状态... 所以我的所有radiobuttons都是viewstate-less ..

这是我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI.WebControls;
using System.Web.UI;

namespace CustomControl
{
    public class GroupRadioButton : RadioButton
    {
        public GroupRadioButton()
            : base()
        { }

        protected override void Render(HtmlTextWriter writer)
        {
            base.Render(new GroupedRadioButtonTextWriter(writer,this.GroupName));
        }
    }

    public class GroupedRadioButtonTextWriter : HtmlTextWriter
    {
        private string groupName;

        public GroupedRadioButtonTextWriter(HtmlTextWriter baseWriter, string groupName) : base(baseWriter)
        {
            this.groupName = groupName;
        }

        public override void AddAttribute(HtmlTextWriterAttribute key, string value)
        {
            if (key == HtmlTextWriterAttribute.Name)
            {
                base.AddAttribute(key, this.groupName);
            }
            else
            {
                base.AddAttribute(key, value);
            }
        }
    }
}

任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

考虑到RadioButtonList是您应该使用的组件,我认为您通过实施自己的单选按钮来滥用您的时间。