jeudi 3 novembre 2016

ASP.NET Core MVC AutoPostBack dropdownlist TagHelper

Si vous avez commencé à jouer avec ASP.NET Core MVC, vous avez probablement commencé à utiliser les TagHelpers, car c'est vraiment une fonctionnalité GENIALE.

La problématique


Pour le développement d'un site, j'ai dû intégrer la "Localisation" (inspiré de l'excellent article de Andrew Lock) et permettre à l'utilisateur de changer de langue sur le site.


Dans l'exemple qui suit, on est obligé de cliquer sur le bouton "OK" pour poster le formulaire de validation du choix de langue et cela n'est pas très ergonomique. Mon intention est donc de changer  la langue au moment où l'on choisit un langue dans le menu déroulant, sans trop modifier le code existant :




Le fait est que dans notre cas, j'utilise un composant "select" avec des "TagHelpers" et je ne souhaite surtout pas modifier ce composant très pratique. Comment faire donc pour avoir mon autoPostBack sur ce composant ?

Une solution possible


J'ai opté pour une solution assez simple à l'aide du bon vieux JavaScript :



J'ai rajouté une action "onchange" sur mon composant Html, suivi d'un simple "submit" de mon "form" car au final, c'est bien ce que faisait mon bouton "Ok" que je souhaitais supprimer.
Et voilà, le tour est joué.
Comme d'habitude, si vous avez des solutions alternatives et meilleurs, je suis preneur.

Aucun commentaire:

Enregistrer un commentaire