Здравствуйте! Помогите, пожалуйста, решить 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
Заведите в Вашем классе свойство-делегат, которое класс будет использовать, когда ему нужно обратиться к 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;
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости