Получить идентификатор объекта главной страницы на странице содержимого

Если на главной странице есть метка с идентификатором label1, как мне управлять этим идентификатором на странице содержимого. Идентификатор не передается, поэтому я не могу его контролировать. Например, если у меня есть элемент управления с идентификатором contentLabel, я могу получить доступ к его коду, просто набрав contentLabel (что бы я ни делал)


person auwall12688    schedule 21.06.2012    source источник
comment
@antisanity Я думал, что это технический термин - смешно! Я тоже думал, что MasterType должен автоматически появляться в разметке. Я считаю, что они делают это, потому что вы можете динамически установить главную страницу в коде программной части, поскольку они слабо связаны. Выбор MasterPage при создании новой страницы служит только для установки MasterPage по умолчанию. Таким образом, объявить MasterType — это то же самое, что обещать не назначать динамические MasterPages (и взамен вы получаете вознаграждение в виде строго типизированного Intellisense).   -  person MikeTeeVee    schedule 25.06.2012


Ответы (1)


Вот два варианта:

1: убедитесь, что aspx вашего контента указывает MasterType:

<%@ MasterType VirtualPath="~/yourMasterPageName.master" %>

Это позволяет вашей странице контента знать, чего ожидать от вашей мастер-страницы, и дает вам интеллектуальное представление. Итак, теперь вы можете пойти дальше и открыть свойство Text метки в коде программной части главной страницы.

public string ContentLabelText
{
    get { return contentLabel.Text; }
    set { contentLabel.Text = value; }
}

Затем вы можете получить к нему доступ на странице кода программной части вашей страницы контента, например:

Master.ContentLabelText = "hah!";

или, 2: вы можете получить доступ к ярлыку через FindControl() вот так:

var contentLabel = Master.FindControl("contentLabel") as Label;
person canon    schedule 21.06.2012
comment
есть ли лучшая практика или это единственный способ? просто любопытно - person auwall12688; 22.06.2012
comment
Спасибо, работает идеально. Я новичок в .NET. Некоторое время программировал, но никогда не занимался .NET или веб-разработкой. - person auwall12688; 22.06.2012
comment
@auwall12688 auwall12688 Идея сделать защищенный член таким образом неприятным для меня. См. описание непристойного разоблачения Джеффа Этвуда здесь: codinghorror.com/blog/2006. /05/code-smells.html. Если все, что вам нужно сделать, это изменить текст, я бы использовал геттер и сеттер только для текста. то есть общедоступная строка ContentText {get{return contentLabel.Text;} set{contentLabel.Text=value;}} - person MikeTeeVee; 25.06.2012