Asp.net mvc 在第一次迭代中绑定所有数据的Foreach循环

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

伙计们,在我的ASP MVC 4 web应用程序中,我试图将
教育
详细信息绑定到模型
候选人
模型。现在发生的是,在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,我希望你的问题得到解决。