2016-09-22 2 views
0

Ich habe ein Problem beim Erstellen von HTML-Liste Basis auf Array in C#. Ich versuchte mit split.string, foreach und etc ,. aber immer noch nicht die Logik herausgefunden ... :(..
Wer kann mir helfen, mein Problem zu lösen
Hier mein Array istConfusing Erstellen HTML-Liste Basis auf Array

 List<string> listMenu = new List<string>(); 
     listMenu.Add("Dashboard~View1"); 
     listMenu.Add("Dashboard~View2"); 
     listMenu.Add("Customer"); 
     listMenu.Add("Part"); 
     listMenu.Add("Part~Part1~Part11"); 
     listMenu.Add("Part~Part1~Part12"); 
     listMenu.Add("Part~Part2~Part21"); 
     listMenu.Add("Part~Part2~Part22"); 
     listMenu.Add("Part~Part3~Part31~Part311"); 
     listMenu.Add("Part~Part3~Part31~Part312"); 
     listMenu.Add("Branch"); 

Und ich möchte HTML-Liste wie folgt erstellen?:

<div id=menu> 
 
    <ul> 
 
    <li>Dahboard 
 
     <ul> 
 
      <li> View1 </li> 
 
      <li> View2 </li> 
 
     </ul> 
 
    </li> 
 
    <li> Customer 
 
    </li> 
 
    <li> Part 
 
     <ul> 
 
      <li> Part1 
 
       <ul> 
 
        <li> Part11 
 
        </li> 
 
        <li> Part12 
 
        </li> 
 
       </ul> 
 
       </li> 
 
      <li> Part2 
 
       <ul> 
 
        <li> Part21 
 
        </li> 
 
        <li> Part22 
 
        </li> 
 
       </ul> 
 
      </li> 
 
      <li> Part3 
 
       <ul> 
 
        <li> Part31 
 
         <ul> 
 
          <li> Part 311 
 
          </li> 
 
         </ul> 
 
        </li> 
 
        <li> Part 312 
 
        </li> 
 
       </ul> 
 
      </li> 
 
     </ul> 
 
    </li> 
 
    <li> Branch 
 
    </li> 
 
    </ul> 
 
</div>

+0

Sie versuchen, eine hierarchische Menüstruktur mit einer flachen Liste Datenstruktur darstellen, was nicht ideal ist. Wenn Sie die listMenu-Datenstruktur steuern können, sollten Sie eine Art Strukturbaumstruktur/verknüpfte Liste verwenden. Dadurch wird es einfacher, es als hierarchisches HTML-Menü anzuzeigen. – Polyfun

Antwort

0

Es gibt zwei Möglichkeiten, wie Sie diese Liste erstellen dynamisch verwenden können:

  1. können Sie Htmlgenericcontrol-Struktur verwenden, wie unten:

    HtmlGenericControl c = new HtmlGenericControl("div"); 
        c.Attributes.Add("id", "menu"); 
        HtmlGenericControl ul1 = new HtmlGenericControl("ul"); 
        c.Controls.Add(ul1); 
        HtmlGenericControl li1 = new HtmlGenericControl("li"); 
        li1.InnerText = "Dashboard"; 
        ul1.Controls.Add(li1); 
    
        mainDiv.Controls.Add(c); 
    
  2. Sie können eine Zeichenfolge mit Stringbuilder erstellen und diese Zeichenfolge als Innerhtml zu Ihrem Haupt-div zuweisen, wie unter:

    StringBuilder s = new StringBuilder(); 
        s.Append(@"<div id=menu> 
           <ul> 
           <li>Dahboard 
            <ul> 
             <li> View1 </li> 
             <li> View2 </li> 
            </ul> 
           </li> 
           </ul> 
          </div> "); //you can alter this string dynamically 
        mainDiv.InnerHtml = s.ToString(); 
    
  • Sie sollten ad d System.Web.UI.HtmlControls zur Verwendung HtmlControls

  • Sie sollten System.Text als verwenden, um StringBuilder verwenden.

  • Bonus: Sie können von here finden, warum Sie StringBuilder anstelle des Hinzufügens von Zeichenfolge mit "+" verwenden sollten.