Pergunta

Eu estou procurando uma maneira de (de preferência) tipo fortemente uma página mestra de um controle de usuário que é encontrado em uma página de conteúdo que usa a página mestra.

Infelizmente, você não pode usar isso em um controle de usuário:

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

Estou tentando acessar uma propriedade da página mestra do controle de usuário e preferiria não ter de passar a propriedade a partir da página principal para a página de conteúdo para o controle de usuário porque várias páginas de conteúdo usam o mesmo controle do usuário. Uma mudança, um lugar outros enfeites.

Foi útil?

Solução

Tente Page.Master.

Whatever whatev = (Whatever)Page.Master;

Você tem que ter certeza que você adicione as declarações using adequadas para o topo do seu arquivo, ou qualificar o tipo de página mestre em linha.

Uma pegadinha potencial é se esse controle é usado por uma página diferente cuja página principal não é o mesmo tipo. Isso só seria pego em tempo de execução.

Outras dicas

Você já tentou Page.FindControl ( "nome") no usercontrol?

A melhor maneira de fazê-lo que eu encontrei é realmente a construir uma classe personalizada que é baseado fora de UserControl, dar-lhe uma propriedade principal com um acessor get que os peixes através do this.Page.Parent até parar Encontrando páginas mestras (Se você é do assentamento, este passo é desnecessário de outra forma) e, em seguida, retornar esse controle web como o tipo de página mestra que você deseja usar. Então, quando você adicionar um novo controle de usuário, alterar sua classe base para o nome da sua classe personalizada. A propriedade .Master será acessível e lançou corretamente como a página principal você quer usar.

Em VB tudo o que eu precisava fazer era mudar isso:

Dim lAuthLevel As Integer = Master.MasterContact.AuthenticationLevel

a esta:

Dim lAuthLevel As Integer = CType(Me.Page.Master, main).MasterContact.AuthenticationLevel

Assim, todas as referências de Mestre se tornar Ctype (Me.Page.Master, typeofMaster)

Onde está, neste caso, a palavra "principal" - começar a partir da declaração no topo da página mestre. por exemplo.

Assim, "principal" neste caso:)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top