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

C# ASP.NET - Use method from another class to create labels

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

只要我拥有 _Default class 中的所有方法,它就可以完美运行。然而,我真正需要的是将所有这些东西都放在一个包装器中 class。我已经使用我正在做的事情所需的所有其他方法创建了包装器 class,除了标签之外,一切都很好。他们不显示。这不是代码本身的问题,因为相同的代码在 _Default class 中工作。它不是 class 本身,因为 class 中的其他方法在 _Default class 中工作正常。所以这似乎是我无法弄清楚的关于 labels-in-other-classes 的具体内容。 classes 之间的控件是否存在一些继承问题?

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

     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 class 中,我调用这个方法,

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

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

您正在尝试添加到包装器 class 内的控件。但是 Page 对象在你的包装器中不可用 class.

您可以 return 包装器 class 中的标签并将其添加到主 class 中的控件。

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

然后在 _Default class 中调用此方法,

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

将父控件作为参数传递给 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");