首页 > 解决方案 > 如何在一个模型中合并两个不同的模型并在一个视图中显示输出?

问题描述

这是我的模型

    {
        public int Id { get; set; }
        public int? MainSurveyId { get; set; }
        public string Question { get; set; }
        public DateTime? DateCreated { get; set; }
        public string CreatedBy { get; set; }
        public string Status { get; set; }
        public IList<xxAnswer> answers { get; set; }
    }

这是我的控制器,请注意我将var questionvar answer

 [HttpPost]
        public IActionResult CompareCompetitors(string[] comps, int Surveyid)
        {
           var model = new CompareCompetitorAnswers();
           foreach( var item in comps){
               model.competitorNames.Add( new xxCompetitor() { CompetitorName = item} );
           }

            var questions = _context.SurveyQuestions.ToList().Where(x => x.MainSurveyId == Surveyid);
            foreach (var q in questions){
                model.questions.Add(new xxQuestion { Question = q.Question});
            }

             var answers = _context.SurveyCompetitorAnswer.ToList().Where(x => x.MainSurveyId == Surveyid);
            foreach (var a in answers){
                model.answers.Add(new xxAnswer { Answer = a.Answer});
            }


            return View(model);
            //return string.Join(",", comps); // check if it works with this. ph wait. i think correct. sorry. i will try now.
        }

这是我的观点,但它显示@foreach (var a in q.answers).

 <tbody>
         @foreach (var q in Model.questions)
            {
                <tr>
                    <td scope="row">
                        @q.Question
                    </td>
                    @foreach (var a in q.answers)
                    {
                        <td scope="row">
                            @a.Answer
                        </td>    
                    }


                </tr>
            }
        </tbody>

我希望将答案发布在结果旁边。它们位于不同的数据库表中。但它输出错误@foreach (var a in q.answers)

标签: c#htmlasp.net-core

解决方案


我终于想通了:

<tbody>      
    @foreach (var q in Model.questions)
    {
      <tr>
      <td scope="row">
        @q.Question
      </td>
      @foreach (var a in Model.answers.Where(x => x.SurveyQuestionId == q.Id))
      {
         <td scope="row">
           @a.Answer
         </td>    
      }
      </tr>
    }
</tbody>

我没有使用

public IList<xxAnswer> answers { get; set; }

我刚用过:

@foreach (var a in Model.answers.Where(x => x.SurveyQuestionId == q.Id))

推荐阅读