В основном я не использую MasterPage, и у меня просто есть проект с Default.aspx с несколькими метками, текстовыми полями и т. Д. Я потратил несколько часов на поиск решения и нашел его, но что-то в моей голове до сих пор меня достает, что я не сделал это так, как хотел.
У меня нет проблем с доступом к ним и настройкой их свойств из PageLoad.
Но я создал класс, как и фрагмент кода ниже, и он выдает мне «Ссылка на объект не установлена на экземпляр объекта» . И я не могу понять, чего мне не хватает.
class Functions
{
public static void myMethod()
{
WebForm1 mainForm = new WebForm1();
mainForm.myTextBox.Text = "Something.";
}
}
Мне удалось сделать так:
class Functions
{
public static void myMethod()
{
System.Web.UI.Page myMainForm;
myMainForm = (System.Web.UI.Page)System.Web.HttpContext.Current.Handler;
TextBox myTextBox = (TextBox)myMainForm.FindControl("myTextBox");
}
}
Но речь идет не просто о том, чтобы сделать это, а о том, как я узнаю, где я ошибаюсь , поскольку я не могу понять это и хочу получить более простой способ сделать это, учитывая, что я очень плохо знаком с ASP.NET. Обычно, когда я пишу базовые приложения в WinForms - у меня нет проблем с доступом к различным формам.
И мне не нравится делать FindControl () для каждого элемента управления, к которому я пытаюсь получить доступ. Если есть простой и в то же время эффективный обходной путь, я бы с удовольствием его услышал.
Заранее спасибо.
Редактировать : Я сделал этот пример отдельно от своего проекта, но эту идею я пытаюсь реализовать. Могут быть небольшие ошибки в фрагментах кода, извините.