Come si può sapere se forma runat = server è stato impostato?
Domanda
Quando si codifica una pagina Asp.Net, in genere si aggiunge un attributo runat nel aspx:
<form id="form1" runat="server">
E 'possibile raccontare in codice dietro se l'utente non ha fatto questo vale a dire che hanno fatto solo questo:
<form id="form1">
Qui il modulo ha l'ID "form1", ma nel mio caso non lo so questo. Codice dietro come questo è quello che sto cercando:
if(Page.HasForm)
{
}
Soluzione
Si può sempre e solo avere un tag form con "runat = server" su di esso per pagina aspx. Tutto quello che dovete fare è quello di verificare se Page.Form è null o non. Se si tratta di nulla, allora non c'è modulo che è stato contrassegnato per runat server.
if (Page.Form != null)
{
}
E 'il runat = parte "server" che rende il processo pagina aspx un elemento e creare un oggetto corrispondente sul lato server. Se un componente non è in esecuzione sul server, allora non è aggiunto alla gerarchia di controllo della pagina.
Altri suggerimenti
var v = this.Form.TagName; // prende il nome del modulo che viene maked come runat.
Naturalmente se non la sua resa a come runat allora il vostro codice dietro non verrà eseguito in ogni caso ...
Quando il codice in C # o Visual Basic nella pagina di codice, non avrete accesso all'oggetto che non hanno il runat = set di opzioni del server.
Si può facilmente accedere a tutti i comandi da una pagina utilizzando la pagina Me.Controls o qualcosa del genere (non so il codice esatto, ma è vicino a questo) e verificare il tipo di controllo per ottenere la forma .
Perché avete bisogno di sapere che? Se una pagina non ha una forma runat = server, non può davvero essere utilizzato come una pagina del server.
Si sarebbe in grado di accedere al modulo dal codebehind:
Response.Write(form1.Name);
Senza l'= "server" runat, si era appena ottiene un errore di compilazione.