Domanda

Qual è il metodo migliore per gestire una situazione in cui si dispone di un elenco a discesa ASP.Net che viene utilizzato per collegarsi a un altro URL

modificato per chiarezza

Ecco lo scenario di base:

Elenco a discesa con 5 città associate

La selezione di una delle città dovrebbe inviarmi a un URL basato sulla città

In questo momento sto postando di nuovo usando " OnSelectedIndexChanged " quindi gestendo l'evento e reindirizzando alla pagina appropriata.

Tuttavia, ciò sta causando 2 hit sul server per città selezionata, 1 per gestire il postback e il reindirizzamento, quindi un altro per eseguire il rendering della pagina effettiva.

L'uso di JavaScript personalizzato per costruire un URL è la mia migliore opzione?

È stato utile?

Soluzione

Puoi aggiungere un gestore lato client per l'evento di selezione modificata e quindi reindirizzare alla pagina desiderata in base al valore selezionato:

<asp:DropDownList ID="ddl" runat="server"
  onchange="document.location.href = this.value;" >
    <asp:ListItem Text="a" Value="http://url1"></asp:ListItem>
    <asp:ListItem Text="b" Value="http://url2"></asp:ListItem>
    <asp:ListItem Text="c" Value="http://url3"></asp:ListItem>
    <asp:ListItem Text="d" Value="http://url4"></asp:ListItem>
</asp:DropDownList>

Altri suggerimenti

Imposta autopostback su false e aggiungilo all'evento sul lato client onchange (supponendo che il valore abbia l'intero URL, in caso contrario, modifica come appropriato):

window.navigate(this.options[this.selectedIndex].value);

Mi chiedo solo, perché non recuperare le informazioni sulla città tramite AJAX (ci sono diversi tutorial video su www.asp. net / learn ) e mostra all'utente le informazioni sulla città invece di creare un altro salto di pagina?

è solo un'idea, un'idea Web 2.0 :)

Se la pagina è pesante e sei preoccupato per i tempi di rendering, puoi usare ajax per eseguire il rendering dei risultati della query. Il server colpito per elaborare i dati di post e reindirizzare dovrebbe essere minimo e non vale la pena farlo lato client. Personalmente, mi concentrerei di più sulla visualizzazione dei dati che l'utente desidera per la prima volta.

Normalmente, sono d'accordo, ma è necessario disporre di un URL concreto per ogni pagina + rigenerare anche altre parti della pagina quando si colpisce l'URL.

Grazie per i suggerimenti!

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