0

In my limited experience with .Net MVC5, i tried to write the following code:

<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>

I defined a random variable [temp], i want every button sytle to be random, But it doesn't show different styles, where did I make a mistake? Thanks in advance.

Foskill
  • 81
  • 1
  • 9

1 Answers1

2

Please create Random r = new Random(); outside of loop. Random class is initialized using current time. Foreach loop is quick, so every Random instance is seeded with the same values.

Some details here: 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>
    }
}
LukLed
  • 31,452
  • 17
  • 82
  • 107