我有一个输出问题列表的视图(yesno和multiple choice)。对于Multiple Choice问题,我想传递可能的多选答案,但我无法弄清楚如何传递2个查询。有没有办法做到这一点,还是以其他方式更好地处理?
控制器代码:
public ActionResult Test(int id)
{
var listofquestions = from m in db.vQuestionnaireQuestions
where m.Questionnaire_ID.Equals(id)
select m;
return View("Test", listofquestions.ToList());
}
查看代码:
<% foreach (var item in Model)
{ %>
<br />
<%: item.Question_Text %>
<%if (item.Question_Type_ID == 1) //Yes-No Question
{ %>
//Yes-No Stuffs
<% }
else if (item.Question_Type_ID == 2) //Multiple Choice
{ %>
//Can I access a Linq query again here?
//I have Question_ID to use, but I don't think
//I can have 2 Models
<% }
else //All Else
{ %>
//All Else Stuffs
<% }
} %>
修改
我已经创建了一个视图模型类
查看模型类代码:
public IEnumerable<vQuestionnaireQuestion> FindAllQuestionnaireQuestionsTest()
{
return db.vQuestionnaireQuestions;
}
public vQuestionnaireQuestion GetQuestionnaireQuestionsTest(int id)
{
return db.vQuestionnaireQuestions.FirstOrDefault(q => q.Questionnaire_ID == id);
}
public IEnumerable<Multiple_Choice_Answers> FindAllMultipleChoiceAnswersTest()
{
return db.Multiple_Choice_Answers;
}
public Multiple_Choice_Answers GetMultipleChoiceAnswersTest(int id)
{
return db.Multiple_Choice_Answers.FirstOrDefault(q => q.Question_ID == id);
}
并将其添加到我的视图的继承中:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<QuestionnaireApp.Models.Questionnaire>>" %>
模型信息似乎没有像现在所有我的item.fieldname因为没有定义而回来。我是不是太复杂了?
答案 0 :(得分:1)
尝试将结果包装在视图模型类中,并将其传递给View
class SomeClassName {
IEnumerable<Question> ListOfQuestions;
IEnumerable<Answer> ListOfAnswers;
}
答案 1 :(得分:0)
许多人专门为了在控制器和视图之间传递数据而创建一个类。这样您就可以定义所需的任何属性,并且您的类的实例可以轻松地在其中包含一个或多个LINQ结果集。