我已经阅读了许多文章和文档,但仍然不清楚我可以在全局中包含什么。asax和_AppStart。cshtml文件。
我试着放一些简单的东西,比如
@{
var rlist = new List<string>();
rlist.Add("Value1");
rlist.Add("Value2");
}
在两个文件中,并试图在我的默认值中使用它们。CSHTML没有运气,它说它没有在上下文中定义。
我认为这段代码在任何地方都能被识别。
我发现它只适用于_AppStart的唯一方法。cshtml是通过将我的var分配给AppState字典:
@{
var rlist = new List<string>();
rlist.Add("Value1");
rlist.Add("Value2");
AppState["rlist"] = rlist;
}
然后我可以通过我的页面引用rlist变量,像这样:
var soulis = ((List<string>) AppState["rlist"]);
在全球。
谁能解释一下发生了什么事?AppStart是一个Web Pages框架文件,在应用程序首次启动时执行一次,就像Global.asax一样。我怀疑这是专门设计来保护初学者免受所有事件的影响。默认情况下,asax包含由Visual Studio/WebMatrix生成的文件。
可以使用Global。Asax挂钩到特定的事件来执行您喜欢的任何代码。
AppStart更多的是为简单的事情而设计的,比如初始化WebSecurity helper,或者设置全局变量。如果声明了变量,那么只有将它们声明为全局变量时,它们才能在整个应用程序中被访问。您已经发现了一种方法:
AppState["rlist"] = rlist;
或者您可以使用Web页面的动态特性:
App.rlist = rlist;