2010-12-11 4 views
3

J'ai été intéressé de savoir si asp.net nous permet de générer dynamiquement du HTML en ligne sur la page .aspx Source (pas le code-behind).Générer dynamiquement du code HTML dans ASP.NET

Pour le test j'ai créé la page .aspx simple suivante ...

Dans mon asp.net code-behind je les suivantes:

protected List<string> myList = null; 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (myList == null) 
      myList = new List<string>(); 

     myList.Add("One String"); 
     myList.Add("Two String"); 
     myList.Add("Three String"); 
     myList.Add("Four String"); 

     this.Repeater1.DataSource = myList; 
     this.Repeater1.DataBind(); 
    } 

Sur la page source correspondante je:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <ol> 
     <asp:Repeater ID="Repeater1" runat="server"> 
      <ItemTemplate> 
       <li> 
        <%# DataBinder.GetDataItem(myList) %> 
       </li> 
      </ItemTemplate> 
     </asp:Repeater> 
    </ol> 
</body> 
</html> 

La page .aspx résultante est:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head><title> 

</title></head> 
<body> 
    <ol> 

       <li></li> 

       <li></li> 

       <li></li> 

       <li></li> 

    </ol> 
</body> 
</html> 

Notez que le contrôle Repeater a effectivement créé les quatre éléments de la liste. Cependant, le contenu (One String, Two String, etc) de la liste myList n'est pas venu pour le tour.

Que dois-je faire pour évaluer la liste myList et obtenir ses valeurs dans les balises d'élément de liste? En passant, je ne suis pas concerné par la façon d'utiliser le contrôle Repeater spécifiquement, donc s'il y a une solution à ce problème qui n'inclut pas le contrôle Repeater, ça me va.

Remarque: Je suis conscient que je peux lier la liste générique "myList" à un asp: BulletedList et obtenir le même résultat. Je suis plus intéressé par la création dynamique HTML en ligne de la page Source.

Répondre

6

Utilisez ce code:

<asp:Repeater ID="Repeater1" runat="server"> 
    <ItemTemplate> 
     <li> 
      <%# Container.DataItem %> 
     </li> 
    </ItemTemplate> 
</asp:Repeater> 

Si vous avez besoin de lier la source avec la liste des objets avec des propriétés, essayez d'utiliser:

<asp:Repeater ID="Repeater1" runat="server"> 
    <ItemTemplate> 
     <li> 
      <%# Eval("PropertyName") %> 
      or 
      <%# Eval("PropertyName","DataFormat") %> 
     </li> 
    </ItemTemplate> 
</asp:Repeater> 

espère que cela vous aidera à votre question. Bonne chance avec le codage !!! Meilleures salutations Dima.

+0

Merci, Dima. Exactement ce que je cherchais. – Jed

+0

De rien) –

Questions connexes