Diego Vieira
Diego Vieira

Reputation: 266

Loop append div and repeat

I have this code

<div class="round-3-top">
  <div class="round-2-top">
    <div class="round-1-top"></div>
    <div class="round-1-bottom"></div>
  </div>

  <div class="round-2-bottom">
    <div class="round-1-top"></div>
    <div class="round-1-bottom"></div>
  </div>
</div>

<div class="round-3-bottom">
  <div class="round-2-top">
    <div class="round-1-top"></div>
    <div class="round-1-bottom"></div>
  </div>

  <div class="round-2-bottom">
    <div class="round-1-top"></div>
    <div class="round-1-bottom"></div>
  </div>
</div>

But i want generate dynamically, how i do that?

Ex.: i have 4 rounds, this would be the generated code

    <div class="round-4-top">
      <div class="round-3-top">
          <div class="round-2-top">
            <div class="round-1-top"></div>
            <div class="round-1-bottom"></div>
          </div>

          <div class="round-2-bottom">
            <div class="round-1-top"></div>
            <div class="round-1-bottom"></div>
          </div>
        </div>
    <div class="round-3-bottom">
      <div class="round-2-top">
        <div class="round-1-top"></div>
        <div class="round-1-bottom"></div>
      </div>

      <div class="round-2-bottom">
        <div class="round-1-top"></div>
        <div class="round-1-bottom"></div>
      </div>
    </div>
</div>

 <div class="round-4-bottom">
      <div class="round-3-top">
          <div class="round-2-top">
            <div class="round-1-top"></div>
            <div class="round-1-bottom"></div>
          </div>

          <div class="round-2-bottom">
            <div class="round-1-top"></div>
            <div class="round-1-bottom"></div>
          </div>
        </div>
    <div class="round-3-bottom">
      <div class="round-2-top">
        <div class="round-1-top"></div>
        <div class="round-1-bottom"></div>
      </div>

      <div class="round-2-bottom">
        <div class="round-1-top"></div>
        <div class="round-1-bottom"></div>
      </div>
    </div>
</div>

I try using TagBuilder in MVC C# but I can not do. What should happen is, if you are 3 rounds, adding he should go inside each div is like the example above. Any idea how can I develop it?

Upvotes: 0

Views: 190

Answers (1)

Patrick Doran
Patrick Doran

Reputation: 36

You can do this with MVC Helpers that return a MVCHtmlString. The helper class is below. recursion is perfect for this. A helper class

public static class Helpers
{
    public static MvcHtmlString GetStructure(int size)
    {
        return MvcHtmlString.Create(GetRecursiveStructure(size));
    }

    private static string GetRecursiveStructure(int size)
    {
        if (size == 0)
        {
            return "";
        }
        else
        {
            TagBuilder topTag = new TagBuilder("div");
            topTag.AddCssClass(string.Format("round-{0}-top", size));
            topTag.InnerHtml = GetRecursiveStructure(size - 1);
            TagBuilder bottomTag = new TagBuilder("div");
            bottomTag.AddCssClass(string.Format("round-{0}-bottom", size));
            bottomTag.InnerHtml = GetRecursiveStructure(size - 1);
            return topTag.ToString() + bottomTag.ToString();
        }
    }

}

In your view do this:

@Helpers.GetStructure(4)

Upvotes: 1

Related Questions