public ActionResult Index(String sortType) { List <BO.Race> result; switch (sortType) { case "BY_TITLE": // On passe le delegate en paramètres var service = new MgtRace(TrierParTitre); result = service.SortByTitle(); break; case "BY_DATE": // On passe l'expression lambda en paramètres result = serviceRace.SortByDateStart(); break; case "BY_TOWN": // On passe l'expression lambda en paramètres result = serviceRace.SortByTown((BO.Race r1, BO.Race r2) => { return(r1.Town.CompareTo(r2.Town)); }); break; case "BY_LEVEL": // On passe l'expression lambda en paramètres result = serviceRace.SortByLevel((BO.Race r1, BO.Race r2) => { return(r1.Difficulte.Libelle.CompareTo(r2.Difficulte.Libelle)); }); break; case "BY_CATEGORYRACE": // On passe l'expression lambda en paramètres result = serviceRace.SortByCategoryRace((BO.Race r1, BO.Race r2) => { return(r1.CategoryRace.Title.CompareTo(r2.CategoryRace.Title)); }); break; case "DEFAULT": default: result = serviceRace.SortByDateStart(); break; } // #### CHARGEMENT DES DONNEES EN ASYNCHRONE #### // Si on rend l'action Index asynchrone, avec : // => public async Task<ActionResult> Index(SortType sortType = SortType.DEFAULT) { CODE } // On va pouvoir charger les éléments en BDD en asynchrone via la ligne ci-dessous : //result = await serviceRace.GetAllRaceAsync(); // Pour pouvoir charger les données en asynchrone et faire une animation visuelle, // il faudra créer une nouvelle action 'LoadRace()' qui fasse uniquement le chargement asynchrone // des données et l'appeler avec Ajax (jQuery) : // $.ajax( // url: '/Race/LoadRace' // beforeSend: function () { // lancer l'animation visuel } // ).success(function (data) { // // Mettre les données dans la liste grâce à 'data' // }).error(function (data) { // // Afficher une erreur (pop-up) ou laisser la liste vide : aucun résultat trouvé // }).complete(function (data) { // // Arrêter l'animation // }); // #### CHARGEMENT DES DONNEES EN ASYNCHRONE #### return(View(result.ToModels(true))); }