Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Asp.net MVC e Postback

  1. #1
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002

    Asp.net MVC e Postback

    Ciao,
    vorrei sapere una cosa, come faccio ad intercettare per esempio il cambio di un valore in una combobox e lanciare dei comandi lato server ?

    Con le webforms usavo il postback con MVC devo usare Javascript ?

    Ma come ?

  2. #2
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    quello che disorienta di piu al passaggio da asp.net a mvc sono le richieste http specialmente quelle POST. Il motivo è che in asp.net tutto è una chiamata POST alla stessa pagina, tutta la pagina è racchiusa in un form (guarda una masterpage qualsiasi subito dopo il body) e viene usato in maniera trasparente javascript per fare in modo che ogni elemento della pagina possa lanciare la richiesta POST che lato server viene chiamata PostBack.

    Il postback in mvc non esiste piu, in una pagina puoi avere quanti form vuoi che fanno richieste POST al server.

    considera questo pezzo di pagina che rappresenta il tasto di eliminazione di un record

    codice:
    <form action="/clienti/elimina" method="post">
       <input type="hidden" name="id" value"5" />
       <input type="submit" value="Elimina" />
    </form>
    qui invii dei dati circostanziati al loro scopo, sai esattamente quale action viene richiamata (Elimina del controller Clienti) e cosa passi a quella action (un parametro di nome id il cui valore è 5).

    la action sarà qualcosa tipo:

    codice:
    [HttpPost]
    public void Elimina(int id)
    {
      //elimina il record
    
      return RedirectToAction("Index");
    }
    Questa è la base. Se vuoi inviare dei form usando elementi di pagina che non siano i tasti submit devi usare javascript/jquery (è quello che fa asp.net per permettere a qualsiasi cosa di effettuare il postback: ci attacca un handler javascript).

    es. uso il click di un tag anchor per inviare il form

    codice:
    <form action="/clienti/elimina" method="post">
       <input type="hidden" name="id" value"5" />
       Elimina 
    </form>
    ...
    <script>
    $(form a).click(function(e) {
      e.preventDefault();
      $(this).parent().submit();
    });
    </script>
    è un esempio ma potresti scatenare il submit di un form con qualsiasi evento di qualsiasi elemento usando javascript/jquery.

    P.S.
    Il form di prima è puro html, in razor scriverai qualcosa tipo:

    codice:
    @using (Html.BeginForm("Elimina", "Clienti", FormMethod.Post))
    {
      @Html.HiddenFor(m => m.ID)
      <input type="submit" value="Elimina" />
    }

  3. #3
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    Grazie ho risolto impostando in una select l'attributo onchange="this.form.submit();"

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.