RenderAction的奇怪行为

时间:2011-02-17 13:48:25

标签: asp.net asp.net-mvc renderaction

在视图上我在循环中调用渲染动作,动作将创建一个对象数组并返回到带有网格的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次,即使我将一个随机数传递给附加到显示文本的每个Action,网格中每个元素的值也是相同的。

2 个答案:

答案 0 :(得分:2)

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

great answer

示例:

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

答案 1 :(得分:0)

看起来它是引起问题的变量的范围。如果我在循环中声明Random或int或其他内容它不起作用,那么将它移到外面就可以了。