データベースを使用してページ情報を格納し、.NET(C#)を使用してページを構築することで、動的にページを構築しています。そのプロセスの一部は、データベースの内容に基づいてマスターページを(コードビハインドで)設定することであり、私が理解しているように、それはで行う必要がありPage_PreInit
ます。
私の問題は、オブジェクトと変数をからに渡す方法Page_PreInit
ですPage_Load
。
私はそれを次のように機能させることができましたが、この方法を使用するとランダムなコンパイルエラーが発生します:
public partial class BuildPage : System.Web.UI.Page
{
protected static string pageData;
protected void Page_PreInit(object sender, EventArgs e)
{
--- SET pageData = DATA FROM DATABASE, AND SET MASTERPAGE ---
}
protected void Page_Load(object sender, EventArgs e)
{
--- USE pageData TO BUILD AND DISPLAY THE REST OF THE PAGE ---
}
}
さまざまな理由から、私はVisual Studioを使用してページをコンパイルしていません。最初のページの要求で、.NETをオンザフライでコンパイルするだけです。2つのエラーメッセージが表示されます。
1)「CS0102:タイプ「BuildPage」にはすでに「pageData」の定義が含まれています」
2)「ASPNET:このコードファイルで定義されたクラスが「inherits」属性と一致し、正しい基本クラス(PageやUserControlなど)を拡張していることを確認してください。」
奇妙なことに、ページが最初のWebリクエストでコンパイルされることがあります。また、最初のリクエストに含まれない場合は、ランダムな数のページが更新された後、完全にコンパイルされます。コンパイル後、コードビハインドに別の変更を加えて再コンパイルするまで、すべてが正常に機能しているように見えます。
Page_PreInit
そのメソッドを使用してとの間で変数を共有する場合にのみ、これらのコンパイルエラーが発生するようですPage_Load
。つまり、データベースからデータを2回要求した場合、1回は「Page_PreInit」で、もう1回は「Page_Load」でこれらのエラーが発生することはありません。しかし、私は実際にはデータベースの負荷を2倍にしたくありません。
だから私の質問は本当に2つの部分に分かれています、最初に、変数を共有するための許容できる方法ですか、それともからPage_PreInit
にデータを渡すためのより良い方法がありPage_Load
ますか?
そして第二に、それが許容できる方法である場合、エラーは無関係であり、以前にWebリクエストを繰り返した後に単に消える同様のエラーを見た人はいますか?
助けてくれてありがとう!飼料