Question

Sur une vue que j'appelle Render Action avec à partir d'une boucle, l'action créera un tableau d'objets et reviendra dans un partielView avec une grille pour afficher les résultats.

Voir:

foreach (var item in Model)
<%Html.RenderAction("GridData", "Customer", new {passidx = (new Random().Next(50))});%>

Manette:

public ActionResult GridData(int passidx)
    {
        List<Customer> cList = new List<Customer>{new Customer() { name = "c" + (1 + passidx).ToString(), address = "a" + (1 + passidx).ToString() },
                                                  new Customer() { name = "c" + (2 + passidx).ToString(), address = "a" + (2 + passidx).ToString() }};

        return View(cList);
    }

Environ 2 sur 3 fois, je rafraîchis la page Les valeurs pour chaque élément des grilles sont les mêmes, même si je passe un nombre aléatoire à chaque action qui est annexée au texte affiché.

Était-ce utile?

La solution

au lieu d'appeler new Random() dans foreach, déclarez une instance avant foreach. Vous obtenez du double car il utilise la même graine.

Regarde ça très bonne réponse.

Exemple:

Random random = new Random();
foreach (var item in Model)
<%Html.RenderAction("GridData", "Customer", new {passidx = (random.Next(50))});%>

Autres conseils

Il semble que ce soit la portée de la variable qui cause le problème. Si je déclare aléatoire ou int ou quoi que ce soit à l'intérieur de la boucle, cela ne fonctionne pas, le déplacer à l'extérieur le fait.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top