Datalist
!
View
@Html.DatalistFor(model => model.Id, new PeopleDatalist())
Multi datalist
!
View
@Html.DatalistFor(model => model.Id, new PeopleDatalist { Multi = true })
Controller
public class HomeController : Controller
{
    private DbContext Context { get; }

    public HomeController(DbContext context)
    {
        Context = context;
    }

    [HttpGet]
    public JsonResult AllPeople(DatalistFilter filter)
    {
        PeopleDatalist datalist = new PeopleDatalist(Context) { Filter = filter };

        return Json(datalist.GetData(), JsonRequestBehavior.AllowGet);
    }
}
Datalist
public class PeopleDatalist : MvcDatalist<Person>
{
    private DbContext Context { get; }

    public PeopleDatalist(DbContext context)
    {
        Context = context;
    }
    public PeopleDatalist()
    {
        Url = "AllPeople";
    }

    public override IQueryable<Person> GetModels()
    {
        return Context.Set<Person>();
    }

    public override String GetColumnHeader(PropertyInfo property)
    {
        // Defaults to using display name attribute.
        return property.Name;
    }
}
Model
public class Person
{
    [Key]
    public Int32 Id { get; set; }

    [DatalistColumn]
    [Display(Name = "Name")]
    public String Name { get; set; }

    [DatalistColumn]
    [Display(Name = "Surname")]
    public String Surname { get; set; }

    [DatalistColumn]
    [Display(Name = "Income")]
    public Int32 Income { get; set; }

    [Display(Name = "Birthday")]
    [DatalistColumn(Format = "{0:d}")]
    public DateTime Birthday { get; set; }

    public Boolean? IsWorking { get; set; }
}