使用带递归的master.pages查找所有HtmlInputCheckBox控件

时间:2011-06-07 04:38:59

标签: c# asp.net

我认为这会奏效。但它不起作用。它永远不会进入if(c是HtmlInputCheckBox)

private string GetAllCheckBoxes(ControlCollection controls)
{
    StringBuilder sb = new StringBuilder();

    foreach (Control c in controls)
    {
        if (c.HasControls())
        {
            GetAllCheckBoxes(c.Controls);
        }
        else
        {
            if (c is HtmlInputCheckBox)
            {
                CheckBox cb = c as CheckBox;
                if (cb.Checked)
                {                                
                    sb.Append(cb.ID + "_1");                                
                }
                else
                {
                    sb.Append(cb.ID + "_0");
                }
            }
        }
    }
    return sb.ToString();

}

更新:c正在抛出一些错误。

Parent = {InnerText = '((System.Web.UI.HtmlControls.HtmlContainerControl)(((System.Web.UI.HtmlControls.HtmlGenericControl)(c.Parent)))).InnerText' threw an exception of type 'System.Web.HttpException'}

1 个答案:

答案 0 :(得分:0)

HtmlInputCheckBoxCheckBox是不同的类,不会从其他类继承。一个is测试对另一个不起作用,反之亦然。听起来像控件可能是CheckBox的一个实例,所以将条件更改为:

if (c is CheckBox)