9
votes

ASP.NET MVC - Comment passer un tableau à la vue?

Je suis en train de me battre ici, de trouver un moyen facile de transmettre un tableau du contrôleur à la vue sur le cadre ASP.NET MVC.

Donc, dans mon contrôleur, j'aurais quelque chose comme: < Pré> xxx

donc à mon avis, je n'aurais qu'un appel à ViewData ["Payédarray"] et exécutez une boucle dessus.

mais apparemment Le ViewData est reçu par la vue comme System.string , probablement en raison de la déclaration du type de données Array, mais malheureusement, je ne sais pas comment le transmettre correctement et Sans simplement créer des millions de lignes de code.

Ce serait fantastique si on pouvait m'aider.

Merci d'avance


0 commentaires

3 Réponses :


9
votes

Cela devrait fonctionner par casting ViewData ["PassédArt"] dans la vue de la chaîne []. Alternativement, si vous souhaitez faire un effort supplémentaire: Créez une classe de menuLodel contenant ce tableau en tant que membre et transmettez-la sur cette vue sur une version fortement typée de votre vue.


4 commentaires

Merci beaucoup David, j'ai utilisé le casting comme vous l'avez dit, c'est parfait. Mais j'aime bien l'idée de créer une vue spécifiqueModel pour gérer des variables. Je vais essayer de mieux m'en informer. Merci encore.


Il y a beaucoup de bonnes raisons d'opter pour un point de vue. (1) La nécessité d'une distribution ouvre la porte des erreurs d'exécution. (2) La création d'une vue de vue vous donne une flexibilité à l'avenir pour ajouter des fonctionnalités à mesure que vous en avez besoin sans avoir à modifier le type de vue. (3) Votre code sera légèrement plus lisible sans ViewData ["Key"] Code jonchée à votre vue.


David, vous voulez donc dire si je crée une nouvelle classe pour le contrôleur comme myCustomViewModel et passez cette classe comme Var MyCustomone = New MyCustomViewModel (); myCustomone.myarray = nouveau int [] {1,2,3,4} Vue de retour (myCustomone); Je serais en mesure d'accéder à ce tableau à mon avis comme: modèle.myarray comme INT [] est-ce correct?


C'est correct, bien que vous puissiez devoir changer la définition de vue pour que cela fonctionne. Cela sera plus facile à faire si vous copiez le balisage de vue que vous avez, supprimez la vue. Ensuite, cliquez avec le bouton droit de la souris sur la méthode d'action, sélectionnez l'option Ajouter une vue et assurez-vous que l'option fortement dactylographiée est cochée et est définie sur votre nouvelle viewModel.



15
votes

Vous devez lancer dans la vue

<% var myArray = (string[])ViewData["passedArray"]; %>


1 commentaires

Merci pour cet agileguy, vous êtes vraiment très agile! Exactement ce que je voulais. À votre santé



0
votes

Vous pouvez utiliser partielview comme ceci:

  • contrôleur p>

    @model  string
    <li>@Model</li>
    
  • vue p> li> ul>

    @model List<string>
    @foreach (var item in Model) { 
            @Html.Partial("~/Views/Shared/Fruits/_myFruits.cshtml", item);
    }
    
    • PATALALVIEW I.E. _MYFRUITS.CSHTML LI> ul>
          public ActionResult Index()
          {
              List<string> arr = new List<string>() { "apple", "banana", "cat" };
              return View(arr);
          }
      


0 commentaires