Domanda

Ho un'applicazione che ha due elenchi a discesa dipendenti, dove se l'utente seleziona un valore nella casella di riepilogo A, aggiorna il set di input disponibile nella casella di riepilogo B.Ad esempio marca/modello di un'auto.quando l'utente seleziona il produttore, l'elenco dei modelli si aggiornerà di conseguenza.

In winforms, questo verrebbe gestito solo nell'evento autopost back.Quale tecnica/approccio dovrei adottare in asp.net MVC?viene eseguito tramite AJAX?sto solo cercando di aggiornarmi su MVC e cercando di creare strategie per gestire le attività comuni che mi viene chiesto di gestire al lavoro.

Volevo ringraziare tutti coloro che hanno contribuito a rispondere a questo post.

È stato utile?

Soluzione

mi piacerebbe fare questo attraverso ajax. Se si dispone di questi controlli:

<select id="makes" /> e <select id="models" />

, allora si può fare questo con jQuery:

$().ready(function() {
   $("select#makes").change(function() {
        var make = this.value;          
        $.getJSON('models/list?make=' + make, function(data) {
              //load 2nd dropdown with result
        })
   });
});

Poi devi solo bisogno di un'azione sul ModelsController chiamato Lista () che restituisce una struttura di dati JSON.

Altri suggerimenti

Il fatto che tu stia utilizzando ASP.NET MVC è in qualche modo irrilevante.Fondamentalmente hai tre opzioni per questo tipo di meccanica dell'interfaccia utente su una pagina web.

  1. Se i dati nei tuoi elenchi sono relativamente piccoli e cambiano raramente, può essere più semplice precaricare tutti i dati possibili sulla pagina nella richiesta iniziale in qualcosa come un array javascript o elementi nascosti nel markup della pagina.Quando il valore della casella A cambia, JavaScript sostituisce semplicemente il contenuto della casella B con i dati appropriati.Tutto questo avviene senza alcuna richiesta al server, il che lo rende molto veloce.Ma questo metodo non funziona quando la dimensione dei dati influisce sul tempo di risposta del caricamento iniziale della pagina.

  2. Se i dati nei tuoi elenchi sono grandi o cambiano frequentemente (entro l'intervallo di tempo in cui un utente si trova sulla pagina per prendere una decisione), il metodo legacy consiste semplicemente nel ricaricare la pagina con i nuovi argomenti della query quando il valore della casella A i cambiamenti.Il codice sul back-end regola l'output in base ai nuovi argomenti.A seconda di quanto sia complesso il resto del codice di rendering nella tua pagina, questo può essere costoso.

  3. Questa è una variazione dell'opzione 2 ed è fondamentalmente la risposta data da Ben Scheirman riguardo ad ajax.Stai ancora caricando il contenuto del riquadro B su richiesta quando il riquadro A cambia.La differenza è che stai ricaricando solo la parte della pagina che è cambiata anziché l'intera pagina.

Personalmente, se i tuoi dati sono abbastanza piccoli da utilizzare l'opzione 1, è probabilmente quello che sceglierei a causa delle sue prestazioni.Altrimenti scegli l'opzione 3, in particolare se hai già implementato altre cose relative ad Ajax.L'opzione 2 sembra essere considerata una meccanica ereditata da molte persone al giorno d'oggi.

Funzionalmente che avrebbe funzionato per posizionare due elenchi goccia nel loro punto di vista parziale e poi tornare solo che quando si seleziona il valore a Lista. Se questo non è fattibile a scopo di impaginazione, allora il metodo di Ben al di sopra sembra buono.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top