2009-02-25 5 views
1

J'ai un sur ma page de visualisation MVC. J'utilise JQuery pour filtrer une grille lorsque l'index sélectionné change.post <Asp: DropDownList> valeur avec lien d'action (asp.net MVC JQuery)

Au bas de la page, j'ai un lien d'action qui. Je voudrais publier cette valeur sur le contrôleur que le lien d'action pointe vers.

Le problème est, évidemment, la valeur de la boîte peut changer.

Comment puis-je publier dynamiquement des données avec un lien d'action?

Répondre

1

Je pense que ce que je ferais est d'utiliser un formulaire au lieu d'un lien d'action. Votre jQuery mettrait alors à jour certains champs cachés dans le formulaire correspondant aux paramètres de la requête. Votre "lien" alors (pourrait être un bouton) aurait un gestionnaire onclick qui soumet le formulaire. Si vous vous souciez de l'url - et je peux voir où vous pourriez - il suffit que l'action de votre contrôleur se redirige vers lui-même avec les paramètres d'itinéraire corrects.

Vous pouvez également créer et remplacer href sur ActionLink lorsque la sélection est modifiée. Cela impliquerait de maintenir le code dans la vue qui comprend comment vos routes sont construites.

Remarque: l'exemple suivant fonctionnerait probablement mieux avec le formulaire enroulé autour de la liste déroulante elle-même et simplement soumis lors de la sélection modifiée, mais le motif est ce que je suis intéressé à décrire.

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#formLink').click(function() { 
      $(this).parent('form').submit(); 
      return false; 
     }); 
     $('#PageSizeMenu').change(function() { 
      $('#PageSize').val($(this).val()); 
     }) 
    }); 
</script> 

<%= Html.DropDownList("PageSizeMenu", ...) %> 
<% using (Html.BeginForm("List")) { %> 
    <a id="formLink" href="some-reasonable-link-for-non-javascript">Go</a> 
    <%= Html.Hidden("PageSize") %> 
<% } %>