Model binding with nested class

12 Apr 20224 minutes to read

The following example demonstrate on how to model bind data to DropDownList with nested classes in controller.

<ejs-dropdownlist id="dropdown" ejs-for="SelectedAccountNumber" dataSource="Model.BeneficiaryList" width="300" itemTemplate="@Html.Raw("<span>${PersonName.FullName} - ${AccountNumber}</span>")" valueTemplate="@Html.Raw("<span>${PersonName.FullName} - ${AccountNumber}</span>")">
    <e-dropdownlist-fields text="PersonName.FullName" value="AccountNumber"></e-dropdownlist-fields>
</ejs-dropdownlist>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using WebApplication1.Models;

namespace WebApplication1.Controllers
{
    public class DropDownListController : Controller
    {
        public ActionResult nesteddata()
       {

            BeneficiaryViewModel model = new BeneficiaryViewModel();
            List<Person> person = new List<Person>();
            person.Add(new Person { AccountNumber = "5000102394555", PersonName = new Name { FirstName = "Mary", LastName = "Elizabeth", FullName = "Mary Elizabeth" } });
            person.Add(new Person { AccountNumber = "5000102394556", PersonName = new Name { FirstName = "Liz ", LastName = "Smith", FullName = "Liz Smith" } });
            person.Add(new Person { AccountNumber = "5000102394557", PersonName = new Name { FirstName = "Ada", LastName = "Maria", FullName = "Ada Maria" } });
            person.Add(new Person { AccountNumber = "5000102394558", PersonName = new Name { FirstName = "Elizabeth", LastName = "Smith", FullName = "Elizabeth Smith" } });
            person.Add(new Person { AccountNumber = "5000102394559", PersonName = new Name { FirstName = "George", LastName = "David", FullName = "George David" } });
            person.Add(new Person { AccountNumber = "5000102394560", PersonName = new Name { FirstName = "Nancy", LastName = "Rose", FullName = "Nancy Rose" } });
            model.BeneficiaryList = person;
            model.SelectedAccountNumber = "persondetails";
            return View(model);
        }
    }
    public class BeneficiaryViewModel
    {
        public string SelectedAccountNumber { get; set; }
        public List<Person> BeneficiaryList { get; set; }
    }
    public class Person
    {
        public string AccountNumber { get; set; }
        public Name PersonName { get; set; }
    }
    public class Name
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string FullName { get; set; }
    }
}