首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RenderAction的奇怪行为

RenderAction的奇怪行为
EN

Stack Overflow用户
提问于 2011-02-17 21:48:25
回答 2查看 226关注 0票数 1

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

查看:

代码语言:javascript
复制
foreach (var item in Model)
<%Html.RenderAction("GridData", "Customer", new {passidx = (new Random().Next(50))});%>

控制器:

代码语言:javascript
复制
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传递了一个随机数。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-17 21:52:54

foreach之前声明一个实例,而不是在foreach中调用new Random()。您正在获取重复项,因为它使用了相同的种子。

请参阅此great answer

示例:

代码语言:javascript
复制
Random random = new Random();
foreach (var item in Model)
<%Html.RenderAction("GridData", "Customer", new {passidx = (random.Next(50))});%>
票数 2
EN

Stack Overflow用户

发布于 2011-02-17 23:15:26

看起来是变量的作用域导致了问题。如果我在循环中声明了Random或int或者其他什么都不起作用,那么把它移到外部就可以了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5029757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档