Asp.net mvc 在第一次迭代中绑定所有数据的Foreach循环
伙计们,在我的ASP MVC 4 web应用程序中,我试图将Asp.net mvc 在第一次迭代中绑定所有数据的Foreach循环,asp.net-mvc,asp.net-mvc-4,foreach,Asp.net Mvc,Asp.net Mvc 4,Foreach,伙计们,在我的ASP MVC 4 web应用程序中,我试图将教育详细信息绑定到模型候选人模型。现在发生的是,在foreach循环的第一次迭代中,它将相同的数据绑定到所有候选对象。我已经被困在这个问题上超过4个小时了,似乎无法理解 在我的控制器中: if (dsResult.Tables[18].Rows.Count > 0) { foreach (DataRow drRequiredEducation in dsResult.Tables[18].Rows) { var jobDesc
教育
详细信息绑定到模型候选人
模型。现在发生的是,在foreach循环的第一次迭代中,它将相同的数据绑定到所有候选对象。我已经被困在这个问题上超过4个小时了,似乎无法理解
在我的控制器中:
if (dsResult.Tables[18].Rows.Count > 0)
{
foreach (DataRow drRequiredEducation in dsResult.Tables[18].Rows)
{
var jobDescriptionCode = Convert.ToInt32(drRequiredEducation["JobDescriptionCode"].ToString());
var education = new Education();
education.EducationCode = Convert.ToInt32(drRequiredEducation["EducationCode"].ToString());
education.EducationName = drRequiredEducation["EducationName"].ToString();
var candidates = candidatePreOfferViewModel.Candidates.Where(x => x.JobRequisition.JobDescriptionCode == jobDescriptionCode);
foreach (var candidate in candidates)
{
candidate.JobRequisition.JobDescription.JobDescriptionCode = jobDescriptionCode;
candidate.JobRequisition.JobDescriptionCode = jobDescriptionCode;
candidate.JobRequisition.JobDescription.Educations.Add(education);
}}}
在我的CandidatePreOfferViewModel模型中:
public class CandidatePreOfferViewModel
{
public CandidatePreOfferViewModel()
{
this.Candidates = new List<Candidate>();
this.DepartmentCandidates = new List<DepartmentCandidate>();
}
public int SelectedDepartmentCode { get; set; }
public string SelectedCandidateStatusCode { get; set; }
public List<Candidate> Candidates { get; set; }
public List<DepartmentCandidate> DepartmentCandidates { get; set; }
}
public class CandidatePreOfferViewModel
{
公共候选人PreOfferViewModel()
{
this.Candidates=新列表();
this.department候选者=新列表();
}
public int SelectedDepartmentCode{get;set;}
公共字符串SelectedCandidateStatusCode{get;set;}
公共候选列表{get;set;}
公共列表部门候选人{get;set;}
}
候选模型:
public class Candidate
{
public Candidate()
{
this.Educations = new List<Education>();
this.Experiences = new List<Experience>();
this.JobRequisition = new JobRequisition();
this.Performances = new List<CandidatePerformance>();
this.RequiredEducationForRequisition = new List<Education>();
}
.....xyz....
public List<Education> Educations { get; set; }
public List<Experience> Experiences { get; set; }
public JobRequisition JobRequisition { get; set; }
public List<CandidatePerformance> Performances { get; set; }
public List<Education> RequiredEducationForRequisition { get; set; }
}
公开课候选人
{
公开候选人()
{
this.Educations=新列表();
this.Experiences=新列表();
this.jobdirection=新的jobdirection();
this.Performances=新列表();
this.requirededucationforrequision=新列表();
}
……xyz。。。。
公共列表教育{get;set;}
公共列表经验{get;set;}
public JobRequest JobRequest{get;set;}
公共列表性能{get;set;}
申请{get;set;}所需的公共列表减少
}
我认为:
<span>Required:
@foreach (var education in candidate.JobRequisition.JobDescription.Educations)
{
<div>-@education.EducationName</div>
}
</span>
必需:
@foreach(候选人、职位申请、职位描述、教育中的var教育)
{
-@教育名称
}
现在的问题是,在第一次迭代中,它为所有9名候选人设置了教育,然后在第二次迭代中,它再次添加了相同的教育,以此类推,结果我得到了如图所示的重复数据(教育重复了9次,因为总共有9名候选人,而且db中只有3个教育条目):
我正在疯狂地试图解决这个问题,所以你的帮助真的会让我开心。在你的第二个for循环中,检查是否已经为该候选人添加了专业教育 foreach(候选人中的var候选人) { candidate.JobRequest.JobDescription.JobDescriptionCode=JobDescriptionCode; candidate.JobRequest.JobDescriptionCode=JobDescriptionCode
//check if this education is already added.
var alreadyAdded = candidate.JobRequisition.JobDescription.Educations.Where(e=>e.EducationName==education.EducationName).FirstOrDefault();
if(alreadyAdded!=null)
{
candidate.JobRequisition.JobDescription.Educations.Add(education);
}
}}}
这是。linq在哪里,您可能需要使用System.linq;添加。否则,您可以循环检查考生的教育,看看是否存在教育。教育名称是否存在;谢谢您的回答。我有一个问题,尽管我在每个循环中的
已添加的已添加的中为空。这是为什么?尽管我必须更改已添加的adyAdded!=null
到alreadyAdded==null
哦,是的,那应该是alreadyAdded==null,我希望你的问题得到解决。