Como você pode dizer se form runat = server foi definido?
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)
{
}
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.