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");
}
}