Странное поведение с RenderAction - PullRequest
1 голос
/ 17 февраля 2011

В представлении, которое я вызываю с помощью действия Render из цикла, действие создаст массив объектов и вернется к PartialView с сеткой для отображения результатов.

View:

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

Контроллер:

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);
    }

Примерно 2 раза из 3 Я обновляю страницу, значения для каждого элемента в сетках одинаковы, даже если я передаю случайное число каждому действию, котороедобавляется к отображаемому тексту.

Ответы [ 2 ]

2 голосов
/ 17 февраля 2011

вместо вызова new Random() в foreach, объявите один экземпляр перед foreach.вы получаете дубликат, потому что он использует то же самое семя.

См. отличный ответ

Пример:

Random random = new Random();
foreach (var item in Model)
<%Html.RenderAction("GridData", "Customer", new {passidx = (random.Next(50))});%>
0 голосов
/ 17 февраля 2011

Похоже, что проблема связана с областью действия переменной.Если я объявляю Random или int или что-то еще внутри цикла, это не сработает, а перемещение его за пределы делает.

...