我有这个代码从我的服务器显示一个javascript消息警告框,它工作正常,但现在我想将整个代码移动到一个静态类,以便我可以从我的应用程序中的任何地方调用它,而无需复制再次编码到该页面,这是我现在使用的功能:
private static void MessageBox(string msg)
{
Label lbl = new Label();
lbl.Text = "<script language='javascript'>" + Environment.NewLine + "window.alert('" + msg + "')</script>";
Page.Controls.Add(lbl);
}
现在我希望能够在我在我的应用程序中创建的任何webform上从静态类调用此函数。
这是我在“Page.Control.Add(lbl)”上加下划线的错误:
答案 0 :(得分:3)
在代码隐藏中Page
是Page
类型的属性(我知道这很混乱!)所以它引用了Page
类的一个实例。对于此范围之外的静态方法,它只知道类Page
,因此编译器会看到您尝试调用名为Controls
的静态属性,该属性在Page
类中不存在所以以你的方式抛出错误。
您需要将Page
实例传递给MessageBox
方法:
public static void MessageBox(Page page, string msg)
{
Label lbl = new Label();
lbl.Text = "<script language='javascript'>" + Environment.NewLine + "window.alert('" + msg + "')</script>";
page.Controls.Add(lbl);
}