C#ASP.NET - 使用另一个类的方法创建标签

时间:2017-10-20 14:50:30

标签: c# asp.net controls

我有一个带有一些文本框和按钮的简单网页。当我单击其中一个按钮时,我想在下面显示一些标签并显示一些信息。

只要我拥有_Default类中的所有方法,这就完美无缺。但是,我真正需要的是所有这些东西都在一个包装类中。我已经用我正在做的所有其他方法创建了包装类,除了标签之外,一切都很好。他们没有表现出来。这不是代码本身的问题,因为相同的代码在_Default类中起作用。它不是类本身,因为该类中的其他方法在_Default类中工作正常。所以它似乎是关于其他类中的标签的特定内容,我无法弄清楚。跨类控件是否存在一些继承问题?

我在包装器类中只有一个创建标签的简单方法:

     public void createLabels(string labelName)
     {
       Label label_Name = new Label();
       label_Name.ID = "label_Name";
       label_Name.Text = labelName;
       Controls.Add(label_Name);
       Label get_Name = new Label();
       get_Name.ID = "get_Name";
       get_Name.Text = "Not found";
       Controls.Add(get_Name);
     }

然后在_Default类中,我将此方法称为

MyWrapperClass abc = new MyWrapperClass();
abc.createLabels("asdf");

我猜测问题出在" Controls.Add"但我找不到正确的方法。

2 个答案:

答案 0 :(得分:1)

您正在尝试添加到包装器类中的控件。但是您的包装类中没有Page对象。

您可以从包装类中返回一个Label,并将其添加到主类中的控件。

public Label createLabels(string labelName)
 {
   Label label_Name = new Label();
   label_Name.ID = "label_Name";
   label_Name.Text = labelName;
   return label_Name;
 }

然后在_Default类中,调用此方法,如

MyWrapperClass abc = new MyWrapperClass();
Page.Controls.Add(abc.createLabels("asdf"));

答案 1 :(得分:1)

将父控件作为参数传递给createLabels

public class MyWrapperClass 
{
  ...
  public void createLabels(Control parent, string labelName)
  {
    Label label_Name = new Label();
    label_Name.ID = "label_Name";
    label_Name.Text = labelName;
    parent.Controls.Add(label_Name);

    Label get_Name = new Label();
    get_Name.ID = "get_Name";
    get_Name.Text = "Not found";
    parent.Controls.Add(get_Name);
  }
}

MyWrapperClass abc = new MyWrapperClass();
abc.createLabels(this, "asdf");