Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何访问控制器中的列表元素_Asp.net Mvc - Fatal编程技术网

Asp.net mvc 如何访问控制器中的列表元素

Asp.net mvc 如何访问控制器中的列表元素,asp.net-mvc,Asp.net Mvc,实体 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

实体

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; }
}
公共类员工
{   
公共长业务单元ID{get;set;}
公共长雇员ID{get;set;}
公共长信息类型ID{get;set;}
公共字符串EmployeeName{get;set;}
公共列表联系人详细信息{get;set;}
}
公共类联系人数据
{
公共字符串ContactTypeName{get;set;}
公共字符串ContactValue{get;set;}
}
模型

公共类EmployeeDetails
{
公共长业务单元ID{get;set;}
公共列表EmployeeInfo{get;set;}
公共列表联系人{get;set;}
}
公共类雇员数据
{
公共长雇员ID{get;set;}
公共字符串EmployeeName{get;set;}
}
公共类联系人信息
{
公共字符串ContactName{get;set;}
公共长联系人值{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");
    }
}
公共操作结果更新(长BusinessUnitID=2) { if(Session[Constants.Session\u IsAdmin]!=null&&Convert.ToBoolean(Session[Constants.Session\u IsAdmin])) { EmployeeDetails EmployeeDetails=新EmployeeDetails(); List employee=GetEmployeeById(Convert.ToInt64(BusinessUnitID)); List lstEmployeeData=新列表(); List lstContactInfo=新列表(); var ID=employee.Select(x=>x.BusinessUnitID.ToList(); foreach(employee.Where(x=>x.BusinessUnitID==BusinessUnitID)中的var项) { EmployeeData EmployeeData=新EmployeeData(); employeeData.EmployeeID=item.EmployeeID; employeeData.EmployeeName=项目.EmployeeName; foreach(employee.Where(q=>q.EmployeeID==employeeData.EmployeeID)中的var local) { //ContactInfo ContactInfo=新的ContactInfo(); //contactInfo.ContactName=local.ContactDetails.Select(p=>p.ContactName.ToString(); //contactInfo.ContactValue=local.ContactDetails.Select(s=>s.ContactValue.ToString(); } lstEmployeeData.Add(employeeData); } 返回视图(EmployeeDetails); } 其他的 { 返回重定向操作(“登录”); } }
这里我得到了一个列表
Employee
,其中我有以下属性和一个列表
ContactDetails
,该列表至少包含3个属性元素。例如,3种类型的
ContactTypeName
ContactValue
Home:000000000、work:999999、mobile:888888
。对于一个businessUnitid,我获得了一个特定的
员工ID的所有员工ID
我想要联系详细信息,但我无法获得或3
联系人值
联系人姓名
。在列表
Employee
中有一个列表
ContactDetails
,其中有3或5个联系人号码。我不知道如何将其分配给列表。

由于员工可以有多个联系人详细信息,您需要将联系人详细信息列表属性添加到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; }
}
公共类EmployeeDetails
{
公共雇员详情()
{
EmployeeInfo=新列表();
}
公共长业务单元ID{get;set;}
公共列表EmployeeInfo{get;set;}
}
公共类雇员数据
{
公共雇员数据()
{
联系人=新列表();
}
公共长雇员ID{get;set;}
公共字符串EmployeeName{get;set;}
公共列表联系人{get;set;}
}
公共类联系人信息
{
公共字符串ContactName{get;set;}
公共长联系人值{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");
    }
}
公共操作结果更新(长BusinessUnitID=2) { if(Session[Constants.Session\u IsAdmin]!=null&&Convert.ToBoolean(Session[Constants.Session\u IsAdmin])) { List employeebyid(Convert.ToInt64(BusinessUnitID)); List lstEmployeeData=新列表(); foreach(employee.Where(x=>x.BusinessUnitID==BusinessUnitID)中的var项) { EmployeeData EmployeeData=新EmployeeData(); employeeData.EmployeeID=item.EmployeeID; employeeData.EmployeeName=项目.EmployeeName; foreach(员工联系人详细信息中的var联系人) { ContactInfo ContactInfo=新的ContactInfo(); contactInfo.ContactName=contact.ContactName; contactInfo.ContactValue=contact.ContactValue; employeeData.Contacts.Add(contactInfo); } lstEmployeeData.Add(employeeData); } EmployeeDetails empDetails=新EmployeeDetails(); empDetails.EmployeeInfo=lstEmployeeData; 返回视图(详细信息); } 其他的 { 返回重定向操作(“登录”); } }
你能改变你模型的设计吗?为了工作,是的,我能:)@mukeshmodhvadiya为什么不在员工模型中添加ContactDetails属性?与实体类中的相同。让我在回答中添加细节。@MukeshModhvadiya感谢它的有效性。我只想知道一件事,是否可以使用IF和FOR条件将这些检索到的值分配给
@HTM.LabelFor
控件或视图中的任何其他控件。首先,我必须检查businessUnit,然后是EmployeeID和contacttypes,很高兴它能帮助您:)当然,您可以使用带有循环和IF条件的html助手中的所有数据。e、 g.@if(某些条件){你的razor/html代码在这里}
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");
    }
}