2010-11-09 2 views
1

J'ai une vue qui produit une liste de questions (oui et choix multiple). Pour les questions à choix multiple, je veux aussi passer les réponses possibles à choix multiples mais je n'arrive pas à comprendre comment passer 2 requêtes. Existe-t-il un moyen de le faire ou est-il mieux géré d'une autre manière?Est-ce que 2 requêtes Linq peuvent être passées à 1 View?

Code du contrôleur:

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

Afficher le 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

J'ai créé un modèle de vue classe

Voir Code modèle Classe:

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

et ajouté à la inherits de mon avis:

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

Les informations de modèle ne semble pas faire comme maintenant tous mes item.fieldname de reviennent ne pas avoir une définition. Suis-je compliquer cela?

Répondre

1

Essayez d'envelopper les résultats dans une classe de modèle de vue et passer que pour View

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

Je crois que c'est la réponse. Je vais approfondir un peu plus dans ma prochaine question. Merci. – JeffM

0

Beaucoup de gens créent une classe spécialement pour transmettre des données entre le contrôleur et la vue. De cette façon, vous pouvez définir toutes les propriétés dont vous avez besoin, et une instance de votre classe peut facilement contenir un ou plusieurs ensembles de résultats LINQ.

Questions connexes