从父页面获取Web用户控件中元素的值

时间:2012-03-28 20:22:08

标签: c# asp.net user-controls

我有一个包含CheckBoxList的Web用户控件。

MyListControl:

<asp:checkboxlist id="chkList" runat="server">
     <asp:listitem id="option1" runat="server" value="Madrid" />
     <asp:listitem id="option2" runat="server" value="Oslo" />
     <asp:listitem id="option3" runat="server" value="Lisbon" />
</asp:checkboxlist>

我想检查在父页面上提交表单之前检查哪些项目。我希望它能像这样工作:

myParentPage:

MyUserControlInstance.chkList.Items.Count

如何从父页面引用用户控件中的控件?

2 个答案:

答案 0 :(得分:3)

将属性封装在控件后面的代码中。

public int GetLength
{
    get
    {
        return CheckListBox.Items.Cast<ListItem>().Where(
                                     i => i.Selected).ToList().Count;
    }
}

现在替换

MyUserControlInstance.chkList.Items.Count

MyUserControlInstance.GetLength


注意 - 请添加必要的命名空间,例如System.Collections.GenericSystem.Linq

答案 1 :(得分:2)

我会将此信息公开为用户控件上的公共属性,仅返回必要的信息,例如:

using System.Collections.Generic;
using System.Linq;

// ...

public IList<string> CheckedValues
{
    get { return chkList.Items.Cast<ListItem>().Where(i => i.Selected).Select(i => i.Value).ToList(); }
}