Pulsante Indietro dopo aver fatto i post sulla stessa pagina

1

Ho 3 pagine sul mio sito. La prima pagina ti consente di selezionare un sacco di opzioni. Queste opzioni vengono inviate alla seconda pagina per essere visualizzate con alcuni dati su tali opzioni. Da qui posso cliccare su un link per arrivare alla pagina 3 su 1 delle opzioni. A pagina 3 posso creare un nuovo / modificare / eliminare tutto sulla stessa pagina in cui i ricarichi tornano alla pagina 3.

Voglio un pulsante "indietro" a pagina 3 per tornare alla pagina 2, ma mantenere le opzioni che aveva dalla richiesta originale di pagina 1. Pagina 1 ha un sacco di caselle di controllo che vengono passati alla pagina 2 come array al controller. Il mio pensiero è che devo passare questi array (li ho convertiti in elenchi) alla pagina 3 (anche se pensavo che la pagina 3 non ne avesse bisogno direttamente) in modo che la pagina 3 li possa usare nel link posteriore per poter ricreare la pagina dei valori 1 inviato a pagina 2 in origine.

Sto usando asp.net MVC e quando passo l'array convertito sembra convertirlo nel tipo invece di mostrare effettivamente i valori: "types = System.Collections.Generic.List" (dove types è un List .

Questo è ciò che è necessario o ci sono altre opzioni per ottenere un pulsante "indietro" in questo caso per tornare alla pagina 2. È una sorta di dolore passare le informazioni alla pagina 3 che non è È davvero pertinente alla pagina 3, ad eccezione del pulsante Indietro.

    
posta user441521 05.05.2014 - 23:05
fonte

2 risposte

1

Se il POST sta cambiando stato sul server, allora rispondi al POST con un 303 in modo che il browser possa OTTENERE una pagina che descrive quel nuovo stato (cioè, da pagina 1 sei diretto a pagina 2 e la pagina delle informazioni 2 contiene era influenzato dal POST). La cronologia ora funzionerà correttamente.

Se lo stato della pagina 2 è solo un riflesso delle scelte fatte a pagina 1, allora non dovrebbe essere un POST in primo luogo, dovrebbe essere un GET in cui l'URI (forse includendo le opzioni della stringa di query) riflette le scelte fatte. (Ad esempio, la maggior parte dei motori di ricerca funziona in questo modo perché, per esempio, andare a https://www.google.com/search?q=some+search+criteria non cambia nulla su google, ma influisce su ciò che viene restituito. La cronologia ora funzionerà correttamente.

Se lo stato non è cambiato, ma potrebbe avere, o altrimenti si sta affrontando una situazione molto temporanea, quindi rispondere direttamente al POST (ad esempio se si sta facendo il primo approccio qui ma riportando un errore di convalida all'utente invece di facendo ciò che volevano). (La cronologia non funzionerà senza ripubblicazione, ma non dovrebbe farlo).

    
risposta data 01.04.2015 - 14:44
fonte
0

Ci sono un paio di modi per gestirlo.

Alla pagina 1, è possibile pubblicare il modulo su sé stesso (Pagina 1), quindi, se tutto viene salvato correttamente, memorizzare i dati inviati nella sessione e quindi reindirizzare la pagina a Pagina 2. Pagina 2 viene generato dalla sessione informazioni, non i dati inviati ad esso.

Un altro modo sarebbe quello di pubblicare il modulo tramite AJAX, archiviare le informazioni pubblicate nella sessione sul server e quindi reindirizzare a Pagina 2 al termine della chiamata AJAX.

In ogni caso, quando a Pagina 3, dovresti essere in grado di "tornare indietro" alla Pagina 2 senza dover aggiornare la pagina perché non era il risultato di un POST.

    
risposta data 06.05.2014 - 00:03
fonte

Leggi altre domande sui tag