Quando si usa una collection di tipo List<tipo> per fare il binding con un controllo non si ha a disposizione un nome campo e quindi non si può usare l'espressione
XML
<li><%# Eval("nomeCampo") %></li>
ma bisogna usare
XML
<li><%# Container.DataItem %></li>
ovvero Container.DataItem.

Ecco un esempio completo con un ListView
XML: Default.aspx
<%@ Page Title="Home Page" Language="C#" AutoEventWireup="true"
   CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>

  <asp:ListView ID="lv" runat="server">
    <LayoutTemplate>
      <ul>
        <asp:PlaceHolder ID="itemPlaceHolder" runat="server" />
      </ul>
    </LayoutTemplate>
    <ItemTemplate>
      <li><%# Container.DataItem %></li>
    </ItemTemplate>
</asp:ListView>
e il relativo code behind
C#: Default.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1
{
  public partial class _Default : System.Web.UI.Page
  {
    protected void Page_Load(object sender, EventArgs e)
    {
      //datasource di esempio
      List<string> items = new List<string>();
      items.Add("Voce 1");
      items.Add("Voce 2");
      items.Add("Voce 3");

      //binding dei dati
      if (!Page.IsPostBack)
      {
        lv.DataSource = items;
        lv.DataBind();
      }    
    }
  }
}
Potrebbe interessarti anche: