Могут ли веб-формы содержимого ASP.net получать доступ к переменным, объявленным в разделе «Код позади» главной страницы? - PullRequest
3 голосов
/ 01 декабря 2010

У меня есть мастер-страница, которая контролирует стилизацию моего сайта. В коде «позади» есть несколько экземпляров классов, а также переменных. Эти классы проверяют доступ пользователя и затем создают пользовательские объекты

У меня есть несколько форм веб-контента, которые выполняют инструкции, основанные на пользовательских объектах. До сих пор кажется, что в каждой форме веб-контента мне нужно создавать новые экземпляры классов, найденных на главной странице. Это удваивает мою работу для каждой формы веб-контента.

Могу ли я в любом случае унаследовать классы и объекты, созданные в коде мастер-страницы?

Ответы [ 2 ]

8 голосов
/ 01 декабря 2010

Предоставьте доступ к объектам (и даже к элементам управления) как public свойств ( получить только для элементов управления ) на странице Master. Затем на каждой странице aspx, к которой вы хотите получить доступ к этим объектам, добавьте следующее объявление вверху:

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

Как указывает @Kristof, просто получите доступ к своим свойствам, например Master.PropertyName

Кроме того, вы можете определить, имеет ли смысл хранить объекты в пользователях Session (не забывайте, что они должны быть сериализуемыми, если вы используете DB для состояния сеанса). Я делаю это часто и контролирую доступ к ним через свойства базового класса Page, от которого наследуются все мои страницы. На самом деле, у меня есть база master, page и usercontrol, поэтому у меня есть доступ к одним и тем же свойствам (для меня это CurrentUser) везде.

2 голосов
/ 01 декабря 2010

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

SiteMaster master = (SiteMaster)this.Master;
master.MyProperty = 0;

Где SiteMaster - это класс для вашей главной страницы.(SiteMaster по умолчанию для шаблонов приложений)

Хотя мой разум может меня обмануть, я давно этого не делал ...

...