Обращения к свойствам файла из класса. ASP.Net

396
25 июня 2017, 13:31

Здравствуйте! Помогите, пожалуйста, решить 2 вопроса.

1) Есть страница сайта, на которой располагается asp:Label. На северной части происходит обращение к классу, в котором выполняется обработка. Как из данного класса обратиться к свойству Text - Label'а?

2) Есть master-страница, на которой так же располагается asp:Label. Как изменить свойство Text данного лейбела с серверной части дочерний страницы?

Предположение: Использовать объектно-ориентированный подход и делать через get, set. Вот только может быть и такое, что оба вопроса нужно учесть, что приводит к необходимости обратиться из класса (на который я выхожу из дочерний страницы) к свойству Label'а, который находиться на master-странице. Как начинающего в данной области, меня это пугает. К тому же, надеюсь что есть и другие способы взаимодействия.

UPD:

Пытаюсь из дочерний страницы сделать обращение к элементу на master-page.

Элемент:

<asp:Label ID="Access_error" runat="server" Text="test53"></asp:Label>

Обращение:

Label lbl_TitlePage = Page.Master.FindControl("Access_error") as Label;
lbl_TitlePage.Text = "THE KEY QUESTIONS";

Проверяю через отладчик и вижу, что lbl_TitlePage = null.

Хотя, если смотреть свойства Master во время отладки, то он прекрасно видит Label

Answer 1

Заведите в Вашем классе свойство-делегат, которое класс будет использовать, когда ему нужно обратиться к Label.Text, не зная, что происходит внутри вызванного делегата. Дочерняя страница, которая создает объект класс, пусть назначает (добавляет) свой метод к этому делегату, а в методе уже обращается к своему или родительскому Labelу.

  public delegate void SendString(string aValue);
  public class BusinessLogic
  {
    public SendString SendStringEvent;
    public void Execute()
    {
      string textToSend = "test";
      if (SendStringEvent != null)
        SendStringEvent(textToSend );
    }
  }

  class Program
  {
    static void SendStringEventHandler(string a)
    {
      Console.WriteLine(string.Format("*** {0} ***", a));
    }
    static void Main()
    {
      BusinessLogic logic = new BusinessLogic();
      logic.SendStringEvent += SendStringEventHandler;
      logic.Execute();
      Console.ReadKey();
    }
  }

Update

public class ControlFinder
{
  public static FindControlRecursive(this Control aParent, string anId)
  {
    Control result = aParent.FindControl(anId);
    if (result != null)
      return result;
    foreach (Control child in aParent.Controls)
    {
      result = child.FindControlRecursive(anId);
      if (result != null)
        return result;
    }
    return null;
  }
}
Label lbl_TitlePage = Page.Master.FindControlRecursive("Access_error") as Label;
READ ALSO
Нажатие кнопки при нажатии кнопки

Нажатие кнопки при нажатии кнопки

Как сделать так, чтобы при нажатии на кнопку, одновременно нажималась вторая кнопка?

556
Создание таблицы в RichTextBox

Создание таблицы в RichTextBox

Как создать таблицу в RichTextBox? Нужно чтобы по нажатию на Button создалась таблица 2x1, но если нажать на Enter (как и в Word) добавится еще одна строка,...

537
Хостинг для консольного приложения C#

Хостинг для консольного приложения C#

Здравствуйте! Я написал бота для соцсети, и теперь мне нужно где-то его хоститьПроблема в том, что я не могу разобраться где

313
JavaScript - найти ключ зная его значение

JavaScript - найти ключ зная его значение

Надо найти в объекте ключ, зная только его значениеЯ написал код, но он не находит ключи находящиеся в под-объекте

445