2010-04-21 10 views
7

Utilizzo la Pagina master nella mia applicazione ASP.net, nella pagina principale ho inserito ContentPlaceHolder nel Pannello di aggiornamento per supportare AJAX nelle pagine figlio, la domanda è come interrompere i "controlli della pagina master" durante la navigazione tra le pagine?Interrompe l'aggiornamento della pagina Master durante la navigazione tra le pagine?

Per la navigazione tra le pagine ho cercato di usare Response.Redirect, windows.location java script senza successo, devo usare il frame o iframe, invece di pagine master per fermare rinfrescante?

qualche suggerimento per risolvere questo problema altamente sarà apprezzato, Grazie in anticipo ...

risposta

5

Se non si desidera aggiornare la pagina quando si passa da una "pagina all'altra", non sarà possibile utilizzare la pagina principale. Come altri hanno detto in parole diverse, la pagina master è solo un "modello" comune che viene utilizzato da pagine diverse.La navigazione è come chiamare diverse pagine e, naturalmente, ricaricherà l'intera pagina, incluso il contenuto della pagina principale.

  1. Un sollution ho usato con l'Ajax è di avere ogni "pagina" come un utente controlli, e metterli tutti in un UpdatePanel con visible="false". Quindi per la navigazione tra "pagine", cambiare la visibilità per i controlli utente per mostrare il controllo "pagina" corretto.

  2. L'alternativa è utilizzare iframe.

Nessuna di queste soluzioni utilizza MasterPage.

Il concetto di MasterPage è stato progettato per semplificare un aspetto comune prima che Ajax fosse introdotto in ASP.NET. Dopo che Ajax è diventato popolare, la richiesta di non aggiornare l'intera pagina è stata più comune.

+0

Grazie per il tuo post, ho provato la prima soluzione senza mettere tutti i controlli nella pagina, invece ho creato i controlli in fase di esecuzione, molto più veloce e migliore, :(finalmente mi sono spostato di nuovo su Frames perché molti problemi è successo nel codice Java Script. Ora Frames ha risolto questo problema per te grazie per tutti. –

1

Avere una struttura come quella che hai spiegato:

  • Maestro
    • pagina bambino 1
    • pagina bambino 2
    • ...

Quindi non è possibile impedire l'aggiornamento della pagina quando si passa dalla pagina 1 alla pagina 2 ecc. Per avere un'unica entità "pagina" (contenuto principale + contenuto della pagina selezionato) quando viene sottoposta a rendering nel browser.

Se si desidera passare tra diverse visualizzazioni di app all'interno della stessa pagina (in modo da impedire un aggiornamento completo della pagina) è possibile utilizzare una singola pagina (il Master diventa abbastanza inutile) con un updatePanel in cui si caricano le diverse visualizzazioni .

È anche possibile utilizzare iFrame, ma se si deve gestire qualsiasi tipo di comunicazione tra diverse parti della pagina (alcune delle quali sono all'interno di iFrame), consiglierei personalmente di non utilizzarle.

+0

Grazie, Come posso utilizzare UpdatePanel con visualizzazioni diverse? puoi spiegare di più .. –

+0

Puoi ad esempio usare il controllo Tabs. http://www.asp.net/ajax/ajaxcontroltoolkit/samples/tabs/tabs.aspx Ma dipende dall'effetto che si desidera ottenere e dal layout visivo dell'applicazione. – mamoo

2

Una pagina master non è altro che l'estensione della pagina "normale" con (la maggior parte delle volte) il layout predefinito dell'applicazione. La pagina master e i contentplaceholders sono visualizzati come una pagina html completa. Quando navighi tra le pagine è normale che l'intera pagina si aggiorni. Questo è come funziona il web.

Lavorare con un iframe potrebbe risolvere il tuo problema. Tuttavia questo ha alcuni altri effetti collaterali:

  1. L'intera pagina principale non è più utile. Il contenuto attorno all'iframe è la "pagina principale".

  2. Con una pagina master si passa effettivamente a un altro URL, si vede anche nella barra degli indirizzi del browser. Quando lavori con un iframe navighi all'interno dell'iframe in un'altra pagina. L'URL nel tuo browser rimarrà lo stesso. Quando l'utente dell'applicazione tocca il pulsante di aggiornamento, ricomincia sempre dalla pagina predefinita assegnata all'iframe nell'html. Naturalmente ci sono alcune soluzioni alternative

In ogni caso. Dipende davvero dalla tua applicazione. Esistono più soluzioni per aggirare il comportamento di aggiornamento.

+0

Grazie, in realtà ho risolto il problema di aggiornamento utilizzando i frame, ma sto cercando un altro modo per risolvere questo problema, immagino che tu abbia la barra di navigazione sul lato sinistro e le pagine sul lato destro della pagina, voglio quando fai clic qualsiasi elemento in NavBar per non postare indietro la pagina del foro. –

+0

Non è un postback. Basta richiedere un altro url e il server ti restituisce un po 'di html reso dal browser. Qual è il tuo più grande problema/preoccupazione quando si tratta di tutto il rinfrescamento? – Joop

+0

Il problema che sta ricaricando Logo e barra di navigazione e piè di pagina, Causando lentamente nel sito Web, l'esigenza è di rendere il sito Web il più possibile possibile come un'applicazione Windows, e questo non può essere fatto senza il supporto completo di Ajax. –

Problemi correlati