我认为这是一个非常简单的问题......如何将asp.net函数设为全局?例如如果我在default.aspx上定义了函数GetUserInfo(),如何从mypage2.aspx调用此函数?
答案 0 :(得分:14)
另一种方法是创建一个所有页面都继承的基页类:
public class BasePage : System.Web.UI.Page
{
public string GetUserInfo()
{...}
}
所有需要此方法的aspx页面都可以继承BasePage类。由于BasePage继承自System.Web.UI.Page,因此他们也可以访问所有页面方法和属性。
答案 1 :(得分:3)
我将所有“全局”内容都放在一个名为cProgram或cApp的类中。从所有全局属性开始,然后是我的常用方法。
public class cApp
{
private readonly static string _Env =
!string.IsNullOrEmpty(System.Configuration.ConfigurationManager.AppSettings["GenMgrEnv"]) ?
System.Configuration.ConfigurationManager.AppSettings["GenMgrEnv"] : "Prod";
public static string Env
{
get
{ return _Env; }
}
public static int version
{
get { return 3; }
}
public static string CurrentUser()
{
return (System.Web.HttpContext.Current.Request.Cookies["UID"] != null ? System.Web.HttpContext.Current.Request.Cookies["UID"].Value : "");
}
public static Guid UserId
{
get
{
if (System.Web.HttpContext.Current.Session["UserId"] == null)
{
loadUserIdentity();
}
return new Guid(System.Web.HttpContext.Current.Session["UserId"].ToString());
}
}
public static Control FindControlRecursively(String id, Control parent)
{
if (parent == null)
return null;
foreach (Control control in parent.Controls)
{
if (control.ID == id)
return control;
Control child = FindControlRecursively(id, control);
if (child != null)
return child;
}
return null;
}
}
答案 2 :(得分:2)
你可以......
答案 3 :(得分:1)
打开default.aspx并查看该页面的类名称(它可能是_Default
)。确保GetUserInfo()
是一个公共静态方法,然后您可以从mypage2.aspx调用它,如:
_Default.GetUserInfo();
当然,上述方法会很快变得混乱。一种更好的方法是将类文件添加到项目中,并将GetUserInfo()
方法移动到该文件中。实现类似的东西:
public static class Utilities
{
public static string GetUserInfo()
{ ... }
}
允许您通过以下方式在任何页面上调用该方法:
Utilities.GetUserInfo();
答案 4 :(得分:1)
您还可以创建一个静态类,您可以在其中放置可以从任何位置调用的函数。
static class MyClass {
void MyFunction() {
}
}
MyClass.MyFunction();
或者在VB中:
Module MyModule
Public Function MyFunction()
End Function
End Module
MyModule.MyFunction()