Partage
  • Partager sur Facebook
  • Partager sur Twitter

Bogue concernant le cours ASP.NET MVC

Need help!

Sujet résolu
    29 octobre 2015 à 12:58:44

    Bonjour à tous,

    Le bogue concerne le cours ASP.NET MVC et dans la partie "Un soupçon d'Ajax" > "Les formulaires asynchrones".

    Etapes de reproduction du bogue:

    1.Lancer la page de recherche via l'action Recherche du Controller Restaurant => La page Recherche s'affiche ainsi que la vue partielle ResultatsRecherche.

    2. Renseigner la zone de texte et cliquer sur le bouton de recherche => La page s'actualise et affiche SEULEMENT la vue partielle.

    Recherche.cshtml :

    @model ChoixResto.ViewModels.RechercheViewModel
    
    @{
        ViewBag.Title = "Chercher un restaurant";
    }
    
    @*@using (Html.BeginForm("Recherche", "Restaurant", FormMethod.Get))*@
    
    @using (Ajax.BeginForm("ResultatsRecherche", new AjaxOptions
    {
        HttpMethod = "GET",
        InsertionMode = InsertionMode.Replace,
        UpdateTargetId = "resultats",
        OnFailure = "ErreurRecherche",
        LoadingElementId = "chargement"
    }))
    {
        @Html.TextBoxFor(m => m.Recherche);
        <img id="chargement" src="~/Content/Images/ajax-loader.gif" style="display: none" alt="Chargement en cours..." />
        <input type="submit" value="Rechercher" />
        <p>Vue principale : @DateTime.Now.ToLongTimeString()</p>
    
        <div id="resultats">
            @{ Html.RenderAction("ResultatsRecherche", new { rechercheViewModel = Model }); }
        </div>
    }
    
    @section scripts{
        <script type="text/javascript" src="~/Scripts/jquery.unobtrusive-ajax.js"></script>
    
        <script type="text/javascript">
            function ErreurRecherche() {
                $("#resultats").html("Une erreur s'est produite lors de la recherche, veuillez réessayer ...");
            }
        </script>
    }


    ResultatsRecherche.cshtml :

    @model ChoixResto.ViewModels.RechercheViewModel
    
    <p>Vue partielle : @DateTime.Now.ToLongTimeString()</p>
    <p>Résultats de la recherche</p>
    @if (Model.ListeDesRestos.Count == 0)
    {
        <p>Pas de résultat</p>
    }
    else
    {
        <table>
            <tr>
                <th>Nom</th>
                <th>Téléphone</th>
            </tr>
            @foreach (var resto in Model.ListeDesRestos)
            {
                <tr>
                    <td>@resto.Nom</td>
                    <td>@resto.Telephone</td>
                </tr>
            }
        </table>
    }

    RestaurantController.cs :

            public ActionResult Recherche(RechercheViewModel rechercheViewModel)
            {
                //if (!string.IsNullOrWhiteSpace(rechercheViewModel.Recherche))
                //    rechercheViewModel.ListeDesRestos = dal.ObtientTousLesRestaurants().Where(r => r.Nom.IndexOf(rechercheViewModel.Recherche, StringComparison.CurrentCultureIgnoreCase) >= 0).ToList();
                //else
                //    rechercheViewModel.ListeDesRestos = new List<Resto>();
                return View(rechercheViewModel);
            }
    
            public ActionResult ResultatsRecherche(RechercheViewModel rechercheViewModel)
            {
                if (!string.IsNullOrWhiteSpace(rechercheViewModel.Recherche))
                {
                    rechercheViewModel.ListeDesRestos = dal.ObtientTousLesRestaurants().Where(r => r.Nom.IndexOf(rechercheViewModel.Recherche, StringComparison.CurrentCultureIgnoreCase) >= 0).ToList();
                    //Thread.Sleep(1500); //Pour afficher plus longtemps l'image gif du loading durant la recherche.
                }
                else
                    rechercheViewModel.ListeDesRestos = new List<Resto>();
               return PartialView(rechercheViewModel);
            }




    • Partager sur Facebook
    • Partager sur Twitter
    Si vous ne réussissez pas du premier coup, appelez ça "version 1.0".
      29 octobre 2015 à 13:07:15

      Par

      ailleurs, mon adresse dans la barre change en http://localhost:58408/Restaurant/ResultatsRecherche alors que je devrais continuer d'avoir http://localhost:58408/Restaurant/Recherche

      • Partager sur Facebook
      • Partager sur Twitter
      Si vous ne réussissez pas du premier coup, appelez ça "version 1.0".
        29 octobre 2015 à 13:21:24

        Bon les amis j'ai trouvé d'où ça vient. Et comme d'habitude c'est facile à corriger :-D En fait il manque le script jquery. Pour cela ajouter simplement :

        <script src="~/Scripts/jquery-1.10.2.js"></script>

        dans le layout du site ou au pire dans la section scripts de Recherche.cshtml

        • Partager sur Facebook
        • Partager sur Twitter
        Si vous ne réussissez pas du premier coup, appelez ça "version 1.0".

        Bogue concernant le cours ASP.NET MVC

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown