2009-03-31 7 views
2

Je fais semblant d'un autopostback en utilisant jquery depuis que j'utilise asp.net mvc. Il est en cours d'exécution dans une liste de sélection (dropdownlist) comme ceci:trouver la page de renvoi dans asp.net mvc après une redirection jquery

$(document).ready(function() { 
    // autopostback for character drop down list 
    $('#playerCharacters').change(function() { 
     var charId = $('#playerCharacters option:selected').val(); 
     window.location = "/Character/SetDefault/" + charId; 
    }); 
}); 

maintenant dans/Personnage/SetDefault/[Charid] (contrôleur, action, ID) Je suis en train d'accéder à l'URL de référence en utilisant ceci:

Request.UrlReferrer 

Mais ça arrive à zéro. Des idées sur pourquoi c'est?

Répondre

1

Je pense que la configuration de window.location directement est traitée par le navigateur de la même manière que l'utilisateur qui entrerait directement une nouvelle URL dans la barre d'adresse. Cela signifie qu'il n'y a pas de référant puisque les référenceurs sont sur une page renvoyant directement à une autre (par exemple via un lien) et non au navigateur qui se rend sur une autre page ...

La façon la plus simple de résoudre votre problème est de assurez-vous que votre liste déroulante est sous une forme que les messages (ou devient) à/personnage/SetDefault & alors faire votre javascript soumettre le formulaire comme celui-ci:

$('#playerCharacters').change(function() { 
    this.form.submit(); 
}); 

Vous aurez alors juste besoin de changer votre action SetDefault dans votre contrôleur pour avoir un paramètre playerCharacters afin que le MVC liera correctement la valeur de la requête du formulaire à votre méthode.

Questions connexes