开发者

Can 2 Linq queries be passed to 1 View?

I have a view that is outputting a list of questions(yesno and multiple choice). For the Multiple Choice questions, I want to also pass the possible multiple choice answers but I can not figure out how to pass 2 queries. Is there a way to do this or is it better handled another way?

Controller Code:

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());
}

View Code:

<% 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
    <% }
} %>

EDIT

I've created a view model class

View Model Class Code:

public IEnumerable<vQu开发者_如何学GoestionnaireQuestion> 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);
}

and added it to the inherits of my view:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<QuestionnaireApp.Models.Questionnaire>>" %>

The model information does not seem to be making it as now all my item.fieldname's are coming back as not having a definition. Am I over complicating this?


Try wrapping the results in a view model class and pass that to View

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


Many people create a class specifically for the purpose fo passing data between controller and view. That way you can define whatever properties you need, and an instance of your class can easily have one or more LINQ result sets in it.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜