Передача объектов/переменных между Page_PreInit и Page_LoadC#

Место общения программистов C#
Ответить
Anonymous
 Передача объектов/переменных между Page_PreInit и Page_Load

Сообщение Anonymous »

Я создаю страницы динамически, используя базу данных для хранения информации о страницах и .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 компилировать на лету при первом запросе страницы. Я получил два сообщения об ошибках:

1) «CS0102: тип «BuildPage» уже содержит определение для «pageData»»
2) «ASPNET: убедитесь, что класс, определенный в этом файле кода, соответствует атрибуту «inherits» и что он расширяет правильный базовый класс (например, Page или UserControl)».

Странно то, что иногда страница компилируется при первом веб-запросе. И в тех случаях, когда это не происходит при первом запросе, после случайного количества обновлений страницы он скомпилируется идеально. После компиляции все работает нормально, пока я не внесу еще одно изменение в код, и его придется перекомпилировать.

Похоже, я получаю эти ошибки компиляции только при использовании этого метода. для совместного использования переменных между Page_PreInit и Page_Load. Другими словами, если я просто дважды запрашиваю данные из базы данных: один раз в «Page_PreInit» и один раз в «Page_Load», я никогда не получу этих ошибок. Но я бы не хотел удваивать нагрузку на базу данных.

Поэтому мой вопрос на самом деле состоит из двух частей: во-первых, это приемлемый способ совместного использования переменных или есть лучший способ передать данные из Page_PreInit в Page_Load?

И во-вторых, если это приемлемый способ, не связаны ли ошибки и видел ли кто-нибудь подобное ошибки, которые просто исчезают после повторных веб-запросов раньше?

Спасибо за любую помощь!
корм

Подробнее здесь: https://stackoverflow.com/questions/117 ... -page-load
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»