Possiamo usare più moduli in una pagina web?

Finora, tutte le pagine web che ho incontrato contengono al massimo un tag

. Perché non più di quelli? Non riesco a pensare ai motivi per cui più moduli non possono coesistere all’interno della stessa pagina web.

Inoltre, per essere specifici di ASP.NET – perché tutti i controlli del server sono posizionati all’interno del tag

? Perché non metterli da qualche altra parte?

Più,

Ho notato che in un file .aspx , il tag

ha l’attributo runat = server , mentre un normale controllo del server come Button ha anche uno. Quindi sembra che

sia anche un controllo server . Ma stranamente, non riesco a trovarlo nel Visual Studio Toolbox.

Possono esserci più forms, con hack .

È davvero un difetto di WebForms. In ASP.NET MVC puoi implementare tutti i moduli che desideri (ed è un comportamento valido e corretto delle pagine web).

Il motivo per cui tutti i controlli del server sono posizionati all’interno del tag

è quello di consentire al motore WebForms di riconoscerli, caricare i loro valori e salvare i loro valori da / a ViewState. Quasi tutta l’infrastruttura di gestione dei controlli in WebForms si basa sull’idea che un tag contenga tutto ciò che si accede dal code-behind.

Come sottolineato, questa è una delle carenze di WebForms. Voglio sottolineare, inoltre, che con la pubblicazione su più pagine e i gruppi di convalida , in genere è ansible raggiungere il comportamento desiderato (per la maggior parte delle soluzioni “multi-formato”).

Riguardo alla domanda aggiuntiva: il

viene analizzato come class HtmlForm dietro le quinte, che eredita da HtmlControl come qualsiasi altro elemento HTML con runat="server" .

A differenza di qualsiasi altro HtmlControl, tuttavia, può esistere solo un’istanza per pagina e non viene visualizzata nella casella degli strumenti poiché viene aggiunta automaticamente a ogni nuovo modulo creato, quindi è piuttosto inutile.

Sì, può essere fatto – creando un object HtmlForm personalizzato e triggersndo i moduli secondo necessità. Ho appena risposto a una domanda simile qui (con il codice):

Rovine del modulo Paypal Layout del mio Webforms ASP.NET -> Come risolvere?

molte forms non server – è ansible, ma solo una forma runAt Server

ho anche trovato questo:

Un tag modulo sul lato server è il tag che ha un attributo runat = “server”. Se questo attributo è mancante, si tratta di un tipico tag modulo HTML. La conclusione è che è consentito utilizzare più tag form in una pagina, purché solo uno abbia l’attributo runat = “server”. Lo svantaggio del modulo che non ha questo attributo, è che lo stato della vista non funzionerà (il che significa che i valori del modulo spariranno quando si usano i pulsanti del browser indietro / avanti). È un piccolo prezzo da pagare se hai davvero bisogno di più moduli su una pagina.

  1. Prendi la pagina principale e imposta la progettazione.
  2. Prendi un modulo nella pagina principale.
  3. La seconda forma contiene contenere segnaposto.
  4. In contiene segnaposto solo per tag modulo di scrittura (non utilizzato)
  5. Aggiungi la pagina di aspx e disegna il secondo modulo, ma non scrivi il tag del modulo solo per il controllo inserito
  6. Prendi l’evento click-on per scrivere codice

Questo è un modo corretto di due forms