27 messaggi dal 22 settembre 2015
Salve, utilizzo aspnet MVC, dovrei fare in modo che dopo l'inserimento dei dati da parte dell'utente e un messaggio di conferma di corretto inserimento (che già ho predisposto), l'utente cliccando su OK (del messaggio di corretto inserimento) venga reindirizzato su un'altra View, questo per non consentire all'utente di pigiare nuovamente sul bottone di inserimento dati. Come posso fare? Avete qualche consiglio?
Grazie mille in anticipo.
Ciao
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
puoi fare in modo che il bottone OK in realtà sia un semplice link che ti generi con @Html.ActionLink. Puoi dargli l'aspetto di un bottone assegnandogli una classe css e definendo per essa uno stile (colore di sfondo, un po' di padding, bordino, testo bianco o nero).

ciao,
Moreno
Modificato da BrightSoul il 31 agosto 2016 20.18 -

Enjoy learning and just keep making
27 messaggi dal 22 settembre 2015
Ciao grazie per la risposta, siccome avevo già provato con questo codice, volevo chiederti se secondo te potrebbe andare anche se però non funziona e non capisco perchè:
Nel bottone "Inserisci" della vista di partenza:

<input type="submit" value="Inserisci" onclick="return Conferma();"/>

Richiama la funzione javascript (posta nella stessa View):

<script type="text/javascript">
function Conferma() {
if (confirm("ATTENZIONE!: Stai per inserire i dati\r\n Confermi di procedere? "))
{
window.location.href = "/{MioController}/{MiaAction}/{id}";
}
else
{
return false;
}
}
</script>
Ma alla pressione del tasto OK di conferma non avviene il redirect alla View MiaAction.
Cosa sbaglio?
Grazie mille.
Ciao
Modificato da coffee88 il 01 settembre 2016 19.10 -
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
non mi è chiaro quale sia il tuo intento in questa riga di codice, che serve a reindirizzare l'utente verso un'altra pagina.
window.location.href = "/{MioController}/{MiaAction}/{id}";

Perché vuoi reindirizzarlo altrove proprio quando sta inviando i dati del form?

Quando clicchi il bottone "Inserisci", dovresti limitarti a chiedere conferma all'utente. Se l'utente dice di voler confermare, allora fai restituire true alla funzione Conferma().
Se invece l'utente non conferma, allora inibisci il POST facendo restituire false alla medesima funzione. Il codice potrebbe essere semplificato così:
function Conferma() {
  //Restituisce true se l'utente dice di voler confermare
  //Altrimenti false, che inibirà il post
  return confirm("ATTENZIONE!: Stai per inserire i dati\r\n Confermi di procedere? ");
}


Quello che abbiamo visto ora è il bottone Inserisci che agisce in un momento precedente rispetto al bottone OK e perciò penso che i due bottoni siano completamente indipendenti l'uno dall'altro.
Se ho capito bene, il bottone OK appare soltanto a inserimento avvenuto. Come ripeto, dovresti realizzarlo come semplice link ad un'altra tua action.

ciao,
Moreno
Modificato da BrightSoul il 01 settembre 2016 21.41 -

Enjoy learning and just keep making
27 messaggi dal 22 settembre 2015
Ciao e grazie, forse mi sono spiegato male io, cioè se io usassi (ho provato) come dici tu la funzione:

<script type="text/javascript">
function Conferma() {
if (confirm("ATTENZIONE!: Stai per inserire i dati\r\n Confermi di procedere? "))
{
return true
}
else
{
return false;
}
}
</script>

starei chiedendo conferma all'utente sull'inserimento, cioè avverrebbe in sequenza che 1)clicca sul bottone Inserisci 2)viene visualizzato un messaggio con Ok e ANNULLA, se clicca OK avviene l'inserimento dati e ED E' PROPRIO QUI che subito dopo aver confermato e quindi aver inserito i dati vorrei reindirizzare l'utente su un'altra pagina (attualmente se clicca OK vengono inseriti i dati e tutto si ferma li). Quindi il mio problema è che non capisco dove fare quello che mi hai suggerito tu cioè "dovresti realizzarlo come semplice link" in quanto il bottone OK mi viene visualizzato in automatico quando torno "true" nella funzione javascript "Conferma". Dove dovrei agire per far si che il bottone OK sia un semplice link?
ciao e grazie mille
11.886 messaggi dal 09 febbraio 2002
Contributi
Bene ora è chiaro. Il bottone "OK" a cui ti riferisci è quello che si vede in questa immagine, e non uno che hai preparato tu in HTML, nella view.

Devo cambiare il mio suggerimento perché non hai ovviamente la possibilità di modificare quel bottone OK, dato che si trova in una finestra mostrata dal browser.

Devi semplicemente lasciare che l'invio del form faccia il suo corso e quindi la funzione javascript deve diventare così, come indicato nel mio post precedente:
function Conferma() {
  return confirm("ATTENZIONE!: Stai per inserire i dati\r\n Confermi di procedere? ");
}

Penso che tu abbia creduto che subito dopo l'esecuzione del metodo confirm() i dati già fossero stati salvati nel database, ma così non è perché a quel punto il form non è ancora stato inviato al server.

Lato server, hai certamente un'action che riceve i dati del form. Immagino che sia fatta più o meno in questo modo.
[HttpPost]
public ActionResult Edit(FormCollection datiForm) {
}

Nel tuo caso, il nome dell'action che ho presentato qui potrebbe essere differente, come pure il tipo e il numero di parametri che accetta. Sta di fatto che hai un'action decorata con [HttpPost] che riceve i dati del form.

A questa action, dopo aver salvato i dati nel database, devi far restituire questo:
return RedirectToAction("Index");

Dove Index è il nome dell'action a cui vuoi reindirizzare (es l'action che visualizza l'elenco).

Quindi, la tua action diventerà così:
[HttpPost]
public ActionResult Edit(FormCollection datiForm) {
  //Qui salvi i dati nel database
  
  //e qui reindirizzi
  return RedirectToAction("Index");
}


Qui trovi la documentazione del metodo e dei suoi overload.
https://msdn.microsoft.com/it-it/library/system.web.mvc.controller.redirecttoaction(v=vs.118).aspx

ciao,
Moreno
Modificato da BrightSoul il 02 settembre 2016 19.25 -

Enjoy learning and just keep making
27 messaggi dal 22 settembre 2015
ciao grazie mille per la risposta, sono riuscito a fare alla grande tutto quello che mi hai suggerito, notavo però che se l'utente tornasse indietro (cioè con la freccia, alla pagina precedente) riuscirebbe a reinserire gli stessi dati (quindi avrei dei doppioni), non c'è un modo per non consentirgli di tornare indietro e quindi non proponendogli gli stessi dati di prima? Cioè dopo il redirect non dovrebbe aver più modo di ritornare sui dati precedentemente inseriti.
Ciao e grazie
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao, leggi questa discussione, abbiamo affontato un problema simile a quello che hai descritto:
http://forum.aspitalia.com/forum/post/410936/Problema-Tasto-Browser-Pagine-Inserimento-Modifica.aspx

ciao,
Moreno

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.