1

在一个视图上,我在循环内调用渲染操作,该操作将创建一个对象数组并返回到一个带有网格的 PartialView 以显示结果。

看法:

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

我每 3 次刷新页面大约有 2 次,网格中每个元素的值都是相同的,即使我将随机数传递给附加到显示文本的每个动作。

4

2 回答 2

2

而不是调用new Random(),在foreach之前声明一个实例foreach。你得到重复,因为它使用相同的种子。

看到这个很好的答案

例子:

Random random = new Random();
foreach (var item in Model)
<%Html.RenderAction("GridData", "Customer", new {passidx = (random.Next(50))});%>
于 2011-02-17T13:52:53.620 回答
0

看起来这是导致问题的变量的范围。如果我在循环内声明 Random 或 int 或其他任何内容都不起作用,则将其移出即可。

于 2011-02-17T15:15:25.937 回答