как получить доступ к элементам списка в контроллере - PullRequest
0 голосов
/ 16 мая 2018

Объекты

public class Employee
{   
    public long BusinessUnitID{ get; set; }
    public long EmployeeID { get; set; }
    public long InfoTypeID { get; set; }
    public string EmployeeName { get; set; }
    public List<ContactData> ContactDetails{ get; set; }
}

public class ContactData
{
    public string ContactTypeName { get; set; }
    public string ContactValue { get; set; }
}

Модель

Public class EmployeeDetails
{
    public long BusinessUnitID { get; set; }
    public List<EmployeeData> EmployeeInfo { get; set;}
    public List<ContactInfo> Contacts { get; set; }
}

public class EmployeeData
{
    public long EmployeeID { get; set;}
    public string EmployeeName { get; set;}
}

Public class ContactInfo
{
    public string ContactName { get; set; }
    public long ContactValue { get; set; }
}

Контроллер

public ActionResult Update(long BusinessUnitID=2)
{
    if (Session[Constants.Session_IsAdmin] != null && Convert.ToBoolean(Session[Constants.Session_IsAdmin]))

    {
        EmployeeDetails employeeDetails = new EmployeeDetails();
        List<Employee> employee = GetEmployeeById(Convert.ToInt64(BusinessUnitID));
        List<EmployeeData> lstEmployeeData = new List<EmployeeData>();
        List<ContactInfo> lstContactInfo = new List<OptionDetails>();        
        var ID = employee.Select(x => x.BusinessUnitID).ToList();
        foreach(var item in employee.Where(x => x.BusinessUnitID == BusinessUnitID))
        {
            EmployeeData employeeData = new EmployeeData();
            employeeData.EmployeeID = item.EmployeeID;
            employeeData.EmployeeName = item.EmployeeName;
            foreach (var local in employee.Where(q => q.EmployeeID == employeeData.EmployeeID))
            {
                //ContactInfo contactInfo = new ContactInfo();
                //contactInfo.ContactName = local.ContactDetails.Select(p => p.ContactName).ToString();
               //contactInfo.ContactValue = local.ContactDetails.Select(s => s.ContactValue).ToString();
            }
            lstEmployeeData.Add(employeeData);
        }
        return View(EmployeeDetails);
    }
    else
    {
        return RedirectToAction("Login");
    }
}

Здесь я получаю список Employee, в котором у меня есть свойства ниже, и список ContactDetails, который представляет собой список, содержащий не менее 3 элементов для своих свойств. Например, для 3 типов ContactTypeName и ContactValue как Home: 000000000, work: 9999999, mobile: 8888888. Для businessUnitid я получил все employeeid для perticular EmployeeID Мне нужны контактные данные, но я не могу получить или 3 contactvalue и contactname. В списке Employee есть список ContactDetails, в котором будет 3 или 5 контактных номеров. Я не знаю, как мне назначить его в список.

1 Ответ

0 голосов
/ 16 мая 2018

Поскольку сотрудник может иметь несколько контактных данных, необходимо добавить свойство списка контактных данных в класс EmployeeData

Модельные классы:

Public class EmployeeDetails
{
    public EmployeeDetails()
    {
        EmployeeInfo = new List<EmployeeData>();
    }
    public long BusinessUnitID { get; set; }
    public List<EmployeeData> EmployeeInfo { get; set;}
}

public class EmployeeData
{
    public EmployeeData()
    {
        Contacts = new List<ContactInfo>();
    }
    public long EmployeeID { get; set;}
    public string EmployeeName { get; set;}
    public List<ContactInfo> Contacts { get; set; }
}

Public class ContactInfo
{
    public string ContactName { get; set; }
    public long ContactValue { get; set; }
}

Тогда легко передать данные сотрудников с несколькими контактами

public ActionResult Update(long BusinessUnitID=2)
{
    if (Session[Constants.Session_IsAdmin] != null && Convert.ToBoolean(Session[Constants.Session_IsAdmin]))

    {
        List<Employee> employees = GetEmployeeById(Convert.ToInt64(BusinessUnitID));

        List<EmployeeData> lstEmployeeData = new List<EmployeeData>();        

        foreach(var item in employee.Where(x => x.BusinessUnitID == BusinessUnitID))
        {
            EmployeeData employeeData = new EmployeeData();
            employeeData.EmployeeID = item.EmployeeID;
            employeeData.EmployeeName = item.EmployeeName;
            foreach (var contact in employee.ContactDetails)
            {
                ContactInfo contactInfo = new ContactInfo();
                contactInfo.ContactName = contact.ContactName;
                contactInfo.ContactValue = contact.ContactValue;
                employeeData.Contacts.Add(contactInfo);
            }

            lstEmployeeData.Add(employeeData);
        }
        EmployeeDetails empDetails = new EmployeeDetails();
        empDetails.EmployeeInfo = lstEmployeeData;
        return View(empDetails);
    }
    else
    {
        return RedirectToAction("Login");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...