在我从循环中调用Render操作的视图上,该操作将创建一个对象数组,并返回到一个带有网格的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传递了一个随机数。
发布于 2011-02-17 21:52:54
在foreach之前声明一个实例,而不是在foreach中调用new Random()。您正在获取重复项,因为它使用了相同的种子。
请参阅此great answer。
示例:
Random random = new Random();
foreach (var item in Model)
<%Html.RenderAction("GridData", "Customer", new {passidx = (random.Next(50))});%>发布于 2011-02-17 23:15:26
看起来是变量的作用域导致了问题。如果我在循环中声明了Random或int或者其他什么都不起作用,那么把它移到外部就可以了。
https://stackoverflow.com/questions/5029757
复制相似问题