将ASP.NET按钮添加到CodeBehind中的List <t>

时间:2016-01-25 21:36:45

标签: c# asp.net

我有两个asp:button名为ShowSubmit。它们在.designer.cs中声明为:

protected global::System.Web.UI.WebControls.Button Show;
protected global::System.Web.UI.WebControls.Button Submit;

我希望将它们添加到List<Button>

List<Button> buttons = new List<Button> {Show,Submit};

这不是让我这样做的。 2错误显示

  

字段初始值设定项   不能引用非静态字段,方法或属性。

,非静态对象为ShowSubmit。所以我认为我没有将它们添加到初始化程序中的列表中。

List<Button> buttons = new List<Button> ();
buttons.Add(Show);

但VS告诉我buttonsShow是字段,但我将它们用作类型。谁能告诉我正确的方法呢?

更改按钮名称后的类:

public partial class _Default : Page
    {
        List<Button> buttons = new List<Button> ();
        buttons.Add(btnShow);
// some click events below
}

: 解决方案是:初始化List或将元素添加到Page_Load中的List:

public partial class _Default : Page
    {
        private List<Button> tableButtons;

        protected void Page_Load(object sender, EventArgs e)
        {
         tableButtons= new List<Button>();
         tableButtons.Add(btnSubmit);
            tableButtons.Add(btnShow);
        }
}

2 个答案:

答案 0 :(得分:1)

如果按钮位于同一表格上,您可以执行以下操作

List<Button> buttons = this.Controls.OfType<Button>().ToList();

或您的原始代码

List<Button> buttons = new List<Button>
{
    Show, Submit
}; 

答案 1 :(得分:0)

看起来您的代码正常运行,但我想解释为什么它可以在将来帮助您。

您收到这些错误的原因是您尝试将代码置于_Default的类定义中。在类定义中,您可以定义字段,属性,方法以及其他一些不值得进入的内容,但重要的是您不能在定义中放置任意代码。

您需要将代码放在类的方法中,以便它能够正确编译和运行。但是,由于您是在网络表单中执行此操作,因此您还需要通过将其放在ASP.NET Lifecycle Events之一(如Page_Load)或#&#方法中来调用您的代码。 39;由一个生命周期事件调用。

希望这会有所帮助。欢呼声。