2010-05-26 15 views
17

Sto usando la pagina master e quando ho eseguito questa pagina, si vede il seguente messaggio di errore:una pagina può avere un solo lato server tag form

una pagina può avere un solo tag form un server-side

Come posso risolvere questo problema?

+2

È una parte intrinseca dei moduli Web ASP.NET che è possibile utilizzare un solo tag del modulo lato server in una pagina sottoposta a rendering. Puoi avere altri moduli, semplicemente non possono avere l'attributo 'runat =" server "', IIRC. –

+1

Rimuovere completamente i tag dalla masterpage – ahmed

+0

@RussCam Il modello buono è *** tag form *** in _Master_ o in _Pagina di contenuto nidificata? – Kiquenet

risposta

3

Utilizzare solo un tag modulo lato server.

Controlla la tua pagina master per <form runat="server"> - dovrebbe essercene solo una.

Perché ne hai bisogno più di uno?

+0

questa pagina contiene solo contantplace holder ho creato una nuova pagina e l'esecuzione di questa pagina dopo che questo mostra errore. –

+0

@Manoj Wadhwani: assicurarsi che entrambe le pagine abbiano un solo tag modulo sul lato server. – Oded

9

Sembra che tu abbia un tag form in una pagina master e nella pagina che sta generando l'errore.

Si può avere solo uno.

4

La tua pagina contiene questi

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" 
Runat="Server"> 
</asp:content> 

tag, e sono tutti i controlli all'interno di queste? Dovresti avere solo i tag Form nella MasterPage.


Ecco alcuni dei miei comprensione e suggestione:

Html elemento può essere messo nel corpo di pagine html e la pagina HTML non di supporto più elementi, tuttavia essi non possono essere nidificate ogni altro , è possibile trovare la descrizione dettagliata dal W3C HTML specifica:

l'elemento FORM

http://www.w3.org/MarkUp/html3/forms.html

E come per la pagina web form ASP.NET, che si basa su un elemento modulo lato server singolo, che contiene tutti i controlli al suo interno, così generalmente non consigliabile che abbiamo messo più elementi. Tuttavia, questo è ancora supportato nella pagina ASP.NET (pagina master) e penso che il problema nella pagina principale debba essere causato dall'elemento nidificato non supportato, e il multiplo nello stesso livello dovrebbe essere ok. per esempio:

Inoltre, se ciò che si vuole fare attraverso molteplici forme è solo rendere il nostro pagina di invio messaggi a più pagine, penso che si può considerare l'uso della nuova funzionalità di per il cross-posting pagina in ASP.NET 2.0. Questo può aiutarci a usare i pulsanti di controllo per postback su pagine diverse senza moduli multpile su nella pagina:

Inserimento in pagine incrociate in ASP.Pagine Web NET

http://msdn2.microsoft.com/en-us/lib...39(VS.80).aspx

http://msdn2.microsoft.com/en-us/lib...40(VS.80).aspx

+2

I tuoi link sono rotti. – Four

15

penso che hai fatto in questo modo:

<asp:Content ID="Content2" ContentPlaceHolderID="MasterContent" runat="server"> 
    <form id="form1" runat="server"> 

</form> 
</asp:Content> 

Il tag form non è necessaria. perché hai già lo stesso tag nella pagina principale.

Quindi lo rimuovi e dovrebbe funzionare.

+0

la tua pagina principale ha già un modulo. i moduli nidificati non sono consentiti –

+0

Il modello buono è *** tag form *** in _Master_ o in _Nested contentPage_? – Kiquenet

0

volte durante il rendering della pagina corrente come mostrato nel codice seguente genererà lo stesso errore

StringWriter str_wrt = new StringWriter(); 
HtmlTextWriter html_wrt = new HtmlTextWriter(str_wrt); 
Page.RenderControl(html_wrt); 
String HTML = str_wrt.ToString(); 

così come possiamo risolvere la cosa?

+0

questo è il mio problema esatto hai trovato qualcosa per risolvere questo problema? – asdasdad

+0

Questo è anche il problema qui. – CodeIt

0

Anche la tua pagina Master ha un tag Modulo.

Se si desidera eseguire più tag modulo, rimuovere l'attributo runat = "server" e utilizzare invece tag di input HTML semplici.

+0

Il buono schema è *** tag form *** in _Master_ o in _Nested contentPage_? – Kiquenet

Problemi correlati