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");
我有一个带有一些文本框和按钮的简单网页。当我单击其中一个按钮时,我希望下面出现一些标签并显示一些信息。
只要我拥有 _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");