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)
{
}
È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top