페이지 정보를 저장하는 데이터베이스와 빌드 페이지의 .NET (C#)을 사용하여 동적으로 페이지를 작성합니다. 이 프로세스의 일부는 데이터베이스에있는 내용을 기반으로 (코드 숨김) 마스터 페이지를 설정하는 것이며, 이해할 수있는대로이 작업을 Page_PreInit
에서 수행해야합니다.Page_PreInit과 Page_Load 사이의 객체/변수 전달
내 문제는 객체와 변수를 Page_PreInit
에서 Page_Load
으로 전달하는 방법입니다. 나는 페이지를 컴파일하려면 Visual Studio를 사용하지하고있어, 여러 가지 이유로
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 ---
}
}
:
나는 다음과 같이 작동하게 할 수 있었다, 그러나이 방법을 사용하면 임의 컴파일 오류를 데 첫 번째 페이지 요청시 즉시 .NET 컴파일을 수행 할 수 있습니다. 나는이 오류 메시지를 입수했습니다 :
2) "ASPNET는"이미 'pageData'에 대한 정의가 포함 된 형식 'BuildPage'CS0102 "
1)
확인을하는이 코드 파일 경기에서 정의 된 클래스 'inherits'속성을 사용하고 올바른 기본 클래스 (예 : Page 또는 UserControl)를 확장합니다. "이상한 점은 첫 번째 웹 요청에서 페이지가 컴파일되는 경우가 있다는 것입니다. 그리고, 첫 번째 요청시에는 무작위로 페이지를 새로 고친 후 완벽하게 컴파일됩니다. 컴파일 된 후에는 코드를 다시 변경하고 다시 컴파일해야만 정상적으로 작동하는 것처럼 보입니다.
해당 메서드를 사용하여 Page_PreInit
과 Page_Load
사이의 변수를 공유 할 때만 컴파일 오류가 발생하는 것으로 보입니다. 다시 말해, 단순히 데이터베이스에서 두 번 데이터를 요청하면 'Page_PreInit'에 한 번, 'Page_Load'에 한 번만 오류가 발생합니다. 하지만 실제로 데이터베이스 부하를 두 배로 늘리지는 않을 것입니다.
내 질문에는 실제로 두 부분이 있습니다. 먼저 변수를 공유 할 수있는 방법이 있습니까? Page_PreInit
에서 Page_Load
으로 데이터를 전달하는 더 좋은 방법은 무엇입니까?
둘째, 허용되는 방식 인 경우 오류가 관련이 없으며 이전에 반복 된 웹 요청을받은 후에 비슷한 오류가 발생하는 사람이 있습니까?
도움 주셔서 감사합니다. 사료
항상 동일한 데이터로 테스트 중이십니까? 나는. 그것은 때로는 pageData가 데이터베이스에 누락 되었기 때문에 PageLoad에서 액세스하려고 할 때 pageData가 null 일 수 있습니까? – Don
도움을 주신 모든 분들께 고맙게 생각하고 있습니다. 문제는 "정적"수정 자입니다. StackOverflow.Com은 놀라워요. –