none
MVC Controls Toolkit sur VWD Express 2010 RRS feed

  • Question

  • [Fil incluant initialement aussi une question quant à la mise en œuvre, à fractionner faute de clarté]

    Bonjour tout le monde,

    Dans une application de blog en MVC 4 EF 5 Code First, vue de création d'un billet, pour le cas où le numéro du blog n'est pas reçu en paramètre id, je veux afficher une liste déroulante pour inviter l'utilisateur à sélectionner, dans la liste des blogs disponibles, celui sur lequel il veut écrire un nouveau billet.

    Tant que les numéros de blogs se suivent, fastoche. Mais si un blog a été supprimé, il ne suffit pas d'envoyer les intitulés dans une List<string>, l'interface utilisateur doit aussi recevoir les identifiants correspondant aux intitulés affichés, pour retourner celui du blog sélectionné.

    Ici nous trouvons une démonstration de listes déroulantes, qui fonctionne très bien sous Visual Web Developer Express 2010 avec son SP1.

    Maintenant, je cherche comment insérer ça au mieux dans mon projet.

    Le MVC control toolkit, sur Codeplex, représente un bon effort dans ce sens, mais avec un résultat qui, dans le téléchargement proposé en tant que site de démonstration, semble incompatible avec VWD Express 2010 sur .Net 4 (je travaille sur Windows XP Home SP3), ou alors je n'ai pas trouvé à quel niveau de l'arborescence il faut ouvrir le site.

    Il doit bien y avoir moyen d'y arriver ?

    Je dois copier à la main des fichiers un par un ?




    • Type modifié Teodora SharkovaModerator mercredi 30 septembre 2015 22:41
    • Type modifié Gloops samedi 10 octobre 2015 09:41 Nécessité de fractionner le fil en deux questions
    • Modifié Gloops samedi 10 octobre 2015 09:43
    lundi 21 septembre 2015 07:42

Réponses

  • Bonjour, Gloops,

    Le MVC control toolkit, sur Codeplex, représente un bon effort dans ce sens, mais avec un résultat qui, dans le téléchargement proposé en tant que site de démonstration, semble incompatible avec VWD Express 2010 sur .Net 4 (je travaille sur Windows XP Home SP3)

    Le MVC control toolkit a été publié pour la première fois en 2010 quand la dernière version de .NET Framework était 4.0 . Par exemple, parmi Other Releases , il y a une version stable du 6 octobre 2011 (avant la version finale de .NET Framework 4.5). Est-ce que cette version du MVC control toolkit se comporte mieux dans votre environnement ?

    Cordialement,
    Dimitar

    mardi 22 septembre 2015 07:26
    Modérateur

Toutes les réponses

  • Bonjour, Gloops,

    Le MVC control toolkit, sur Codeplex, représente un bon effort dans ce sens, mais avec un résultat qui, dans le téléchargement proposé en tant que site de démonstration, semble incompatible avec VWD Express 2010 sur .Net 4 (je travaille sur Windows XP Home SP3)

    Le MVC control toolkit a été publié pour la première fois en 2010 quand la dernière version de .NET Framework était 4.0 . Par exemple, parmi Other Releases , il y a une version stable du 6 octobre 2011 (avant la version finale de .NET Framework 4.5). Est-ce que cette version du MVC control toolkit se comporte mieux dans votre environnement ?

    Cordialement,
    Dimitar

    mardi 22 septembre 2015 07:26
    Modérateur
  • Bonjour,

    Effectivement, c'était précieux d'avoir un avis éclairé pour ne pas avoir à tester toutes les versions, merci.

    Il faut désactiver Avast même pendant la copie du projet, mais ça ... Ce n'est pas la même question.

    Et effectivement le projet s'exécute.

    Maintenant, il me reste à découvrir là-dedans ce qui existe en matière de gestion des listes déroulantes, et donc dans l'onglet Documentation voir ce qu'on dit sous "Choice and use of Items Controls" ce qui après avoir ensuite cliqué sur Dropdown va me mener là :

    http://mvccontrolstoolkit.codeplex.com/wikipage?title=DropDown

    J'imagine que l'installation consiste à copier vers le site le contenu du répertoire Binaries du zip, sans remplacement pour conserver la version plus récente de jquery déjà installée.


    • Modifié Gloops mardi 22 septembre 2015 09:00
    mardi 22 septembre 2015 08:56
  • On dirait que j'ai un peu trop simplifié pour le déploiement. Le controls toolkit réside dans un fichier dont le nom ressemble à MVCControlsToolkit.dll.

    J'en trouve un dans le répertoire MVC2, et un dans le répertoire MVC3. Pour MVC4, je suppose que MVC3 est plus adapté. J'ai donc un fichier MVC3ControlsToolkit.dll. Il semble que sa place serait bien dans le répertoire bin du projet. Si ayant un peu tâtonné je l'ai mis dans packages j'imagine que ça devrait fonctionner quand même, ce qui importe étant de bien le déclarer avec la commande Ajouter une référence, du menu projet.

    J'ai bien cette référence reconnue dans un contrôleur en haut du module duquel j'ai ajouté "using MVCControlsToolkit.Controls;"

    Après il faudra aussi que j'ajoute les scripts dans le répertoire du même nom, mais j'ai l'impression que l'hésitation que je rencontre n'est pas liée aux scripts.

    Si j'en crois la doc à l'adresse que j'ai mentionnée précédemment, qui présente cette syntaxe :

    @Html.DropDownListFor(m => m.Roles2,
                        new {style="height:100px"},
                        ChoiceListHelper.CreateGrouped(RegisterModel.AllRoles,
                                    m => m.Code,
                                    m => m.Name,
                                    m => m.GroupCode,
                                    m => m.GroupName,
                                    m => new {style="color:White; background-color:Black"},
                                    m =>  new { style = m.Code%2 == 0 ? 
                                        "color:Blue; background-color:White": 
                                        "color:Red; background-color:White"} ))
                     
    

    je devrais aussi déclarer la référence dans la vue, or l'intellisense derrière using au début de la vue ne me la fait pas du tout apparaître, je ne trouve rien qui commence par MVC3 ni MVCControls.

    Déjà pour commencer, déclarer une référence dans une vue n'est pas une ineptie, n'est-ce pas ?

    Si j'essaie de faire passer la liste par le ViewBag ça ne passe pas :

    Message d'erreur du compilateur: CS1973: 'System.Web.Mvc.HtmlHelper<Mvc4BlogsCF4.Models.Post>'

    n'a aucune méthode applicable nommée 'DropDownListFor' mais semble avoir une méthode d'extension

    portant ce nom. Impossible de distribuer de façon dynamique les méthodes d'extension.

    Effectuez un cast des arguments dynamiques ou appelez la méthode d'extension

    sans la syntaxe de méthode d'extension.


    mardi 22 septembre 2015 15:23
  • Bonjour, Gloops,

    Le problème est-il toujours d'actualité?
    Je vous remercie par avance de votre retour.

    Cordialement,
    Teodora

    Votez! Appel à la contribution TechNet Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    mercredi 30 septembre 2015 22:42
    Modérateur
  • Bonjour, Gloops,

    Le problème est-il toujours d'actualité?
    Je vous remercie par avance de votre retour.

    Bonjour,

    Oui j'ai pu intégrer une version compatible du MVC Controls Toolkit, mais pas le mettre en œuvre.

    J'ai passé du temps là-dessus, et il va falloir en passer encore un peu pour reformuler la question.

    J'avais un problème de types de données avec une clef numérique, alors j'ai créé un projet test avec une clef alphanumérique (que du coup je dois alimenter en ADO.Net), mais ... ça n'a pas l'air beaucoup plus probant pour le moment.

    J'ai eu l'impression de faire comme c'était dit, et il y a toujours une erreur. Quand je corrige une erreur c'est une autre qui se présente ...

    jeudi 1 octobre 2015 04:10
  • Histoire d'éviter de débiter tous les tests que j'ai faits, deux questions tout d'abord :

    Première chose, je vois les objets SelectList et DropDownListFor documentés dans MVC, peut-on s'en servir sans le MVC Controls Toolkit ?

    Deuxième chose, au sujet de ces messages m'indiquant une impossibilité de cast entre les types pour la clef, y a-t-il une contre-indication à utiliser une clef numérique pour un objet à sélectionner avec une DropDownListFor sous MVC ?

    Bon alors dans le contrôleur j'ai ça :

        public ActionResult Select(int ddlBlog = 0)
        {
            Blog blog = new Blog();
            IEnumerable<SelectListItem> SelList = (from b in db.Blogs
                         select new SelectListItem
                         {
                             Value = SqlFunctions.StringConvert((double)b.id).Trim(),
                             Text = b.contents
                         });
            //SelList.Items.Insert("0", "Veuillez sélectionner");
            //((System.Collections.IEnumerable)((MultiSelectList)SelList).Items).Add(new SelectListItem{Value="0", Text="Veuillez sélectionner un blog" });
            var BlogList = (from b in db.Blogs select b);
            SelectList SelectBlog = new SelectList("SelList", "Value", "Text", 0);
            ViewBag.SelectBlog = SelectBlog;
            return View(BlogList);
        }

    Et curieusement SelectList.Items n'a plus de méthode Insert. Mais je devrais au moins avoir la liste des blogs.

    Et dans la vue j'essaie d'exploiter ça comme ça :

    @Html.DropDownListFor("ddlBlog", ViewBag.SelectBlogs, null)

    et ça donne une erreur CS1973: 'System.Web.Mvc.HtmlHelper<Mvc4BlogsCF4.Models.Post>' n'a aucune méthode applicable nommée 'DropDownListFor' mais semble avoir une méthode d'extension portant ce nom. Impossible de distribuer de façon dynamique les méthodes d'extension. Effectuez un cast des arguments dynamiques ou appelez la méthode d'extension sans la syntaxe de méthode d'extension.




    • Modifié Gloops jeudi 1 octobre 2015 12:20
    jeudi 1 octobre 2015 11:11
  • J'ai mis ça :

    @Html.DropDownListFor("ddlBlog", (SelectList)ViewBag.SelectBlogs, null)

    et voilà la réponse :

    Message d'erreur du compilateur: CS0411: Les arguments de type pour la méthode 
    'System.Web.Mvc.Html.SelectExtensions.DropDownListFor<TModel,TProperty>(System.Web.Mvc.HtmlHelper<TModel>, System.Linq.Expressions.Expression<System.Func<TModel,TProperty>>, System.Collections.Generic.IEnumerable<System.Web.Mvc.SelectListItem>, object)' 
    ne peuvent pas être déduits à partir de l'utilisation. Essayez de spécifier les arguments de type de façon explicite.

    J'ai un peu essayé de bricoler avec les types dans la signature de DropDownListFor, mais sans trouver au juste la bonne syntaxe.

    jeudi 1 octobre 2015 12:12
  • Apparemment, il semble que j'aie mélangé deux sujets dans le même fil, et que ça ne soit clair pour personne. Je vais donc devoir fractionner.

    samedi 10 octobre 2015 09:40
  • Bonjour, Gloops,

    Je poste le lien vers le nouveau thread ouvert:
    MVC : liste déroulante

    Cordialement,
    Teodora


    Votez! Appel à la contribution TechNet Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    lundi 12 octobre 2015 14:38
    Modérateur