Pergunta

Ao codificar uma página Asp.Net, geralmente você adicionar um atributo runat na aspx:

<form id="form1" runat="server">

É possível dizer no código por trás se o usuário não tiver feito isso ou seja, eles só fizeram isso:

<form id="form1">

Aqui, o formulário tem o "form1" id mas no meu caso eu não sei isso. Código por trás, como este é o que eu estou procurando:

if(Page.HasForm)
{
}
Foi útil?

Solução

Você pode sempre apenas ter um tag formulário com "runat = server" nele por página aspx. Tudo que você tem a fazer é verificar para ver se Page.Form é nulo ou não. Se for nulo, então não há nenhuma forma que tenha sido marcado para o servidor runat.

if (Page.Form != null)
{

}

É o runat = parte "servidor" que faz com que o processo de página .aspx um elemento e criar um objeto correspondente no lado do servidor. Se um componente não está em execução no servidor, então não é adicionado à hierarquia de controle da página.

Outras dicas

var v = this.Form.TagName; // obtém o nome do formulário que é maked como runat.

É claro que a sua não maked como runat então o seu por trás código não será executado de qualquer maneira ...

Quando o código em C # ou Visual Basic na página de código, você não terá acesso ao objeto que não tem o runat = server set opção.

Você pode acessar facilmente todos os controles de uma página usando a página Me.Controls ou algo do tipo (não sei o código exato, mas é próximo a isso) e verifique o tipo do controle para obter o formulário .

Por que você precisa de saber isso? Se uma página não tem uma forma runat = servidor, ele realmente não pode ser usado como uma página do servidor.

Você seria capaz de acessar o formulário do codebehind:

Response.Write(form1.Name);

Sem o runat = "server", você tinha acabado de obter um erro do compilador.

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