Все, что я хочу сделать, является доступом <body>
элемент из кода - позади страницы содержания и добавляет имя класса к нему.
У меня есть основная страница верхнего уровня с <body>
элемент в нем. Затем у меня есть вложенная основная страница, которая является основной страницей для страницы содержания. Из кода позади страницы содержания я хочу добавить имя класса к элементу тела.Это все.
У меня есть это в ведущем устройстве верхнего уровня:
<body id="bodyNode" runat="server">
Я добавил это к коду - позади для страницы содержания:
Master.bodyNode.Attributes.add("class", "home-page");
И я получаю сообщение что:
Система. Сеть. UI.MasterPage' не содержит определение для 'bodyNode
Если я добавляю это к aspx странице содержания:
<% @ MasterType VirtualPath="~/MasterPage.master"%>
Сообщение затем изменяется на:
bodyNode недоступен из-за его уровня защиты
Советуйте, я пропал впустую как 2 часа на том, что чувствует себя подобно чему-то, что должно быть действительно просто сделать :(
после того, как вы установили runat = "server" для своего основного узла, вы должны получить к нему доступ, используя пространство имен HTMLControls. попробуй это.
public void Page_Load(Object sender, EventArgs e)
{
//Inject onload and unload
HtmlGenericControl body = (HtmlGenericControl)Master.FindControl("bodyNode");
body.Attributes.Add("class", "home-page");
}
РЕДАКТИРОВАТЬ
Ваша проблема в том, что у вас есть вложенные главные страницы.
Поскольку тег «body» находится на главной странице верхнего уровня, Master.FindControl ()
не будет работать, поскольку он просматривается на вложенной главной странице.
Что вам нужно сделать, так это использовать Master.Master.FindControl ()
или рекурсивно прокручивать ваши мастер-страницы до тех пор, пока Master.Master
не станет нулевым (тогда вы знайте, что вы находитесь на главной странице верхнего уровня), а затем вызываете FindControl ()
для этого.
Я бы добавил общедоступное свойство к коду за главной страницей, которое разрешило бы доступ к тегу body, который является частью главной страницы. А затем вызовите это свойство со страницы содержимого.