Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202

    [ASP.NET4] Form runat="server"

    Ciao a tutti,
    Dopo aver scassato le balle per quasi due anni nel forum di php finchè non ho inizato quasi a camminare con le mie gambe, ora mi sono messo in testa di dare un'occhio a asp.net 4 e vediamo se riesco a farmi odiare anche qui....

    Sto utilizzando come piattaforma vs2010 creando un'applicazione web mi crea giustamente la master page la quale misteriosamente è inserita in un form runat="server"... ciò ovviamente impedisce che possa andare a creare altre mie form nella altre pagine che poi vengono contenute nella master page (ovviamente sempre runat="server")

    Se io tento di togliere brutalmente il form mi visualizza questo errore

    Control 'NavigationMenu' of type 'Menu' must be placed inside a form tag with runat=server.

    Partendo dal presupposto che a tutto c'è un perchè non riesco a intuire la struttura logica dell'organizzazione creata di default perchè essendoci una form nella master page significa che non posso creare altre form nelle pagine collegate?

    Ciao e Grazie per le risposte
    Che mestiere difficile.....essere da soli ancora di più

  2. #2
    Utente di HTML.it L'avatar di GabbOne
    Registrato dal
    Mar 2006
    Messaggi
    577
    Se io tento di togliere brutalmente il form mi visualizza questo errore

    Control 'NavigationMenu' of type 'Menu' must be placed inside a form tag with runat=server.
    questo è dovuto al fatto che tutti i WebControl messi a disposizione da asp.net (DropDownList, TextBox, Validatori , Oggetti per l'accesso ai dati, etcccc ^etc) necessitano di essere contenuti all'interno di un oggetto form con l'attributo runat ="server".
    Asp.Net infatti oltre a mappare i WebControl come oggetti mappa anche gli elementi Html come oggetti propri del Framework . Questa affermazione però diventa vera solo quando sul tag html viene specificato l'attributo runat="server" mentre per i WebControl l'attributo runat è obbligatorio. Detto questo ogni oggetto taggato con runat="server" deve essere contenuto all'interno di un <form runat="server">.
    Questo è quello che devi fare, il perche è un po complicato da spiegare ma è proprio quello che rende speciale (a mio avviso) asp.net rispetto a php. Se programmi da due anni lato server saprai sicuramente che l'HTTP è un protocollo State Less cioè senza stato quindi tutto quello che ti vuoi portare dietro tra una richiesta e un'altra è tutto a carico del programmatore. Qui invece il discorso cambia ; ASP.NET sicuramente non cambia il protocollo HTTP ma il framework in automatico scrive informazini sullo stato degli oggetti (WebControl e HtmlControl) all'interno della pagina di risposta che arriverà al client.
    Ma dove la scrive questa variabile ?
    codice:
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="CODICE AUTO GENERATO DA ASPNET">
    Ovviamente sai che un tag input deve stare dentro un tag form, e ora sai anche che asp.net per gestire lato server un oggetto HTML (in questo caso il <form>) richiede che questo abbia l'attributo runat impostato su server

    Capirai da solo che questo funzionamento comporta un notevole overhead di risorse perche piu oggetti con il runat="server" hai in una pagina e piu il ViewState aumenterà di dimensione ed inoltre sai che il viewstate viaggia assieme alle richieste HTTP perche contenuto in un form. Con questo voglio solo dirti di usare questi WebControl e HtmlControl con parsimonia ed il consiglio che ti do è di disattivare subito questo funzio nameto che è attivo di default ( puoi disattivare il ViewState dal web.config) e di attivarlo solo per gli oggetti che veramente necessitano di questa funzionalità.

    Ovviamente ti ho buttato giu un mondo di roba per capire capire questo funzionamento ti consiglio di vedere sulla documentazione cosè un PostBack in asp.net e una volta capito cose fare un po di prove e controllare cosa viaggia nel ViewState delle pagine che crei.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.