代码之家  ›  专栏  ›  技术社区  ›  JeffM

可以将2个Linq查询传递到1个视图吗?

  •  1
  • JeffM  · 技术社区  · 15 年前

    我有一个输出问题列表的视图(yesno和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>>" %>
    

    模型信息似乎没有像现在这样成为我的所有项。fieldname的返回没有定义。我是不是太复杂了?

    2 回复  |  直到 13 年前
        1
  •  1
  •   Daniel A. White    15 年前

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

    class SomeClassName {
        IEnumerable<Question> ListOfQuestions;
        IEnumerable<Answer> ListOfAnswers;
    }
    
        2
  •  0
  •   D'Arcy Rittich    15 年前

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