Asp.net 在Web Pages v2网站的global.asax和_AppStart.cshtml中可以包含什么样的代码?

Asp.net 在Web Pages v2网站的global.asax和_AppStart.cshtml中可以包含什么样的代码?,asp.net,global-asax,asp.net-webpages,app-startup,Asp.net,Global Asax,Asp.net Webpages,App Startup,我已经阅读了许多文章和文档,但仍然不清楚global.asax和_AppStart.cshtml文件中可以包含哪些内容 我试着放一些简单的东西,比如 @{ var rlist = new List<string>(); rlist.Add("Value1"); rlist.Add("Value2"); } @{ var rlist=新列表(); rlist.添加(“价值1”); rlist.添加(“价值2”); } 在这两个文件中,并试图在my Defau

我已经阅读了许多文章和文档,但仍然不清楚global.asax和_AppStart.cshtml文件中可以包含哪些内容

我试着放一些简单的东西,比如

@{
    var rlist = new List<string>();
    rlist.Add("Value1");
    rlist.Add("Value2");
}
@{
var rlist=新列表();
rlist.添加(“价值1”);
rlist.添加(“价值2”);
}
在这两个文件中,并试图在my Default.cshtml中使用它们,但没有成功。它说它没有在上下文中定义

我认为这种代码在任何地方都可以识别

我发现它只适用于_AppStart.cshtml的唯一方法是将我的var分配给AppState dictionary:

@{
    var rlist = new List<string>();
    rlist.Add("Value1");
    rlist.Add("Value2");
    AppState["rlist"] = rlist;
}
@{
var rlist=新列表();
rlist.添加(“价值1”);
rlist.添加(“价值2”);
AppState[“rlist”]=rlist;
}
然后我可以通过如下方式在页面中引用rlist变量:

var soulis = ((List<string>) AppState["rlist"]);
var soulis=((列表)AppState[“rlist”]);
在Global.asax中,上述操作无效。


有人能解释一下发生了什么吗?

AppStart是一个网页框架文件,在应用程序第一次启动时执行一次,就像Global.asax一样。我怀疑它是专门为保护初学者不受Global.asax默认情况下由Visual Studio/WebMatrix生成的文件所包含的所有事件的影响而设计的

您可以使用Global.asax钩住特定事件来执行您喜欢的任何代码

AppStart的设计更为简单,比如初始化帮助程序(例如WebSecurity帮助程序),或者设置全局变量。如果声明变量,则只有在声明为全局变量时,才能在整个应用程序中访问这些变量。您发现了一种方法:

AppState["rlist"] = rlist;
也可以使用网页的动态功能:

App.rlist = rlist;

global.asax
文件用于应用程序和会话启动和停止例程。试试看。好的,我明白了,但是关于_AppStart.cshtmlSo,让我们假设我在我的网站中包含了一个DAL项目。我必须在哪里创建我的新DAL对象?在appstart中?global.asax还是在每个页面中?我会在任何需要的地方创建它。如果您将此类内容创建为全局变量,则每个用户都将共享同一个实例。一般来说,这不是个好主意。