可以将2个Linq查询传递给1 View吗?

时间:2010-11-09 20:04:16

标签: asp.net-mvc linq

我有一个输出问题列表的视图(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因为没有定义而回来。我是不是太复杂了?

2 个答案:

答案 0 :(得分:1)

尝试将结果包装在视图模型类中,并将其传递给View

class SomeClassName {
    IEnumerable<Question> ListOfQuestions;
    IEnumerable<Answer> ListOfAnswers;
}

答案 1 :(得分:0)

许多人专门为了在控制器和视图之间传递数据而创建一个类。这样您就可以定义所需的任何属性,并且您的类的实例可以轻松地在其中包含一个或多个LINQ结果集。