代码之家  ›  专栏  ›  技术社区  ›  Foskill

为什么要进来。Net MVC5不循环?

  •  0
  • Foskill  · 技术社区  · 6 年前

    以我有限的经验。Net MVC5中,我尝试编写以下代码:

    <div class="row ">
    @foreach (var item in Model)
    {
        string[] parm = new string[] { "btn-primary", "btn-success", "btn-info", "btn-warning", "btn-danger" };
        Random r = new Random();
        string temp = parm[r.Next(0, parm.Length)];
    
        <div class="col-md-4" style="margin:10px 0">
            <div class="card text-center">
                <div class="card-header">
                    @Html.DisplayFor(modelItem => item.Type)
                </div>
                <div class="card-block" style="margin:10px 0;">
                    <h4 class="card-title" style="margin:10px 0"> @Html.DisplayFor(modelItem => item.Name)</h4>
                    <p class="card-text" style="height:40px;"> @Html.DisplayFor(modelItem => item.Description)</p>
                    <a href="@Html.DisplayFor(modelItem => item.URL)" class="btn @temp btn-sm" style="width:150px;margin:10px 0;">Get it</a>
                </div>
            </div>
        </div>
    }
    </div>
    

    我定义了一个随机变量[温度],我希望每个按钮都是随机的,但它没有显示不同的样式,我在哪里犯了错误?提前谢谢。

    1 回复  |  直到 6 年前
        1
  •  2
  •   LukLed    6 年前

    请创建 Random r = new Random(); 回路外部。 Random 类使用当前时间初始化。 Foreach 循环很快,所以 随机的 实例使用相同的值作为种子。

    此处有一些详细信息: How do I seed a random class to avoid getting duplicate random values

    @{
        Random r = new Random();
        foreach (var item in Model)
        {
            string[] parm = new string[] {"btn-primary", "btn-success", "btn-info", "btn-warning", "btn-danger"};
            string temp = parm[r.Next(0, parm.Length)];
    
            <div class="col-md-4" style="margin: 10px 0">
                <div class="card text-center">
                    <div class="card-header">
                        @Html.DisplayFor(modelItem => item.Type)
                    </div>
                    <div class="card-block" style="margin: 10px 0;">
                        <h4 class="card-title" style="margin: 10px 0"> @Html.DisplayFor(modelItem => item.Name)</h4>
                        <p class="card-text" style="height: 40px;"> @Html.DisplayFor(modelItem => item.Description)</p>
                        <a href="@Html.DisplayFor(modelItem => item.URL)" class="btn @temp btn-sm" style="width: 150px; margin: 10px 0;">Get it</a>
                    </div>
                </div>
            </div>
        }
    }