我的App_Code
文件夹中有一个静态类:
public static class SiteData
{
public static string AdminEmail{ get; set; }
}
该类可以具有静态成员,这些成员将在用户之间共享。在此示例中,我使用了AdminEmail
。
我知道两种初始化AdminEmail
的方法:
解决方案1 :
创建一个_AppStart.cshtml(C#)
@{
SiteData.AdminEmail = "admin@mydomain.com";
}
解决方案2 :
在SiteData
class
public static class SiteData
{
public static string AdminEmail{ get; set; }
static SiteData()
{
AdminEmail = "admin@mydomain.com";
}
}
两个解决方案在应用程序启动时初始化AdminEmail
。以下是我的问题:
1)在这种情况下哪种解决方案更合适?
2)两种解决方案的优缺点?
3)ASP.NET中的AppStart有什么用? IF 静态类可以完成它的任务吗?
答案 0 :(得分:1)
据我所知,AppStart.cshtml似乎与webapp的其余部分更加集成。 http://www.asp.net/web-pages/tutorials/working-with-pages/18-customizing-site-wide-behavior 普通的静态构造函数对Web环境的了解要少得多
答案 1 :(得分:1)
可以使用Web Pages框架中的AppState
类定义应用程序级别(全局)变量。这是一个类似于Session的简单字典。您也可以通过动态别名引用它:App
例如
App.AdminEmail = "admin@mydomain.com";
与
相同AppState["AdminEmail"] = "admin@mydomain.com";
你可以混合使用这两种方法。
使用它们的主要缺点是它们不是强类型的。在一个主要依赖于dynamic
类型的框架中,这对您来说可能不是问题。
主要优点是AppState(或App)非常易于使用,并且不需要任何额外的管道来使其工作。
Web页面框架旨在降低开发人员的复杂性。 AppStart只是global.asax中的Application_Start事件处理程序的简化视图。