2008-12-30 5 views
3

Dropdown Quelle est la meilleure méthode pour traiter une situation où vous avez un ASP.Net DROPDOWNLIST qui est utilisé pour créer un lien vers une autre URLde ASP.NET Réorientation

modifié pour plus de clarté

Voici le scénario de base :

DROPDOWNLIST avec 5 villes liées à elle

la sélection d'une des villes devrait me envoyer une URL basée sur la ville

À l'heure actuelle, je poste en utilisant l'événement "OnSelectedIndexChanged" puis en gérant l'événement et en le redirigeant vers la page appropriée.

Toutefois, cela provoque 2 appels au serveur par ville sélectionnée, 1 pour gérer la publication et la redirection, puis un autre pour afficher la page réelle.

Est-ce que l'utilisation du javascript personnalisé pour construire une URL est ma meilleure option?

+0

pourriez-vous décrire un scénario afin que nous puissions aider mieux? – Perpetualcoder

Répondre

17

Vous pouvez ajouter un client- gestionnaire de côté pour la sélection a changé événement, puis rediriger vers la page souhaitée en fonction de la valeur sélectionnée:

<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> 
+0

Il est cool que vous n'ayez pas eu besoin de <% = ddl.ClientID%> n'importe où! – jrcs3

+0

très gentil, je n'ai jamais réalisé que "ceci" fonctionnerait dans ce contexte. Je l'aurais écrit comme "document.getElementById ('ddl') ..." – CodingWithSpike

+0

si vous mentionnez l'objet que vous appelez le script de ... utilisez toujours le mot-clé "this" :) – balexandre

3

Réglez le autopostback false, et l'ajouter à l'événement côté client onchange (en supposant que la valeur a l'URL complète, sinon, modifier le cas échéant):

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

Je me demande, pourquoi ne pas aller chercher les informations sur la ville via AJAX (il y a plusieurs tutoriels vidéo sur www.asp.net/learn) et spectacle l'utilisateur l'information de la ville au lieu de cre mangé autre saut de page plus?

il est seulement une idée, une idée Web 2.0 :)

0

Si la page est lourde et vous êtes préoccupé par les temps de rendu, vous pouvez utiliser ajax pour rendre les résultats de la requête. Le serveur doit traiter les données postales et la redirection doit être minimale et ne pas valoir la peine d'être effectuée côté client. Personnellement, je me concentrerais plus sur l'affichage des données que l'utilisateur veut la première fois.

0

Normalement, je suis d'accord, mais il faut avoir une URL concrète pour chaque page et régénérer d'autres parties de la page en cliquant sur l'URL.

Merci pour vos suggestions!