1

多くの記事やドキュメントを読みましたが、global.asax および _AppStart.cshtml ファイルに何を含めることができるかまだ明確ではありません。

のような簡単なものを入れてみました

@{
    var rlist = new List<string>();
    rlist.Add("Value1");
    rlist.Add("Value2");
}

両方のファイルで、私の Default.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"]);

Global.asax では、上記は機能しません。

誰かが何が起こっているのか説明できますか?

4

1 に答える 1

2

AppStart は、Global.asax と同様に、アプリケーションの初回起動時に 1 回実行される Web ページ フレームワーク ファイルです。Global.asax ファイルが Visual Studio/WebMatrix によって生成されるときにデフォルトで含まれるすべてのイベントから初心者を保護するために特別に設計されたのではないかと思います。

Global.asax を使用して特定のイベントにフックし、任意のコードを実行できます。

AppStart は、ヘルパー (WebSecurity ヘルパーなど) の初期化やグローバル変数の設定などの単純なことのために設計されています。変数を宣言する場合、変数がグローバルとして宣言されている場合にのみ、アプリケーション全体でアクセスできます。あなたはそれを行う1つの方法を発見しました:

AppState["rlist"] = rlist;

または、Web ページの動的機能を使用できます。

App.rlist = rlist;
于 2013-03-19T19:11:45.773 に答える