无法在任何条件下在MVC中使用多个Model

时间:2013-10-26 17:54:11

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 model-view-controller

我正在为我的MVC应用程序创建一个投票机制。用户将能够只投loged后,我完全有3个表tblQuestions(填充题),tblAnswers(填充答案),tblQuestionAnswerUserResponses(填充用户响应。)tblAnswers有tblQuestions关系。我在HttpGet的容器​​中使用了以下代码。这是我的控制器代码。

   [HttpGet]
        [ActionName("VotingResult")]
        public ActionResult VotingResult(int personid)
        {
            List<Voting_Questions> QuesList = EpDObj.PopulateQuestions(); //Populate the list of questions
            CountofQuestionsDisplayed = QuesList.Count;
            ViewBag.Questions = QuesList; // Storing the list of questions in the viewbag
            List<Voting_Answers> Answers = EmcObj.Voting_Answers.ToList(); //Populate the list of answers
            return View(Answers);
        }

我在视图中使用Voting_Answers作为模型我的观点是

@model  IEnumerable<EmployeeManagementDAL.Voting_Answers>


<h2>VotingResult</h2>

@using (Html.BeginForm())
{

<div>
    @foreach (var a in ViewBag.Questions)
    {
        <h4>@a.Questions</h4>
        <div>
            @foreach (var b in Model)
            {
                if (b.QuestionsID == a.id)
                {                                  
                @Html.RadioButton(b.AnswersOptions, new {Answerid= b.id, Questionid=a.id }) @b.AnswersOptions
                }
            }
        </div>
    } 
</div>
<br/>
<div >
    <input type="submit" value="Vote Now!!" onclick="return confirm('Are you sure you want to submit your choices?');"/>
</div>
}

当用户第一次访问此页面时,将不会选择任何选项。选择选项后,单击“保存”按钮会将详细信息保存到第三个表格,然后他将从该页面中退出。现在,如果他第二次到达该页面进行编辑,我希望我的页面在我的tblQuestionAnswerResponses中使用这些值进行渲染,即我想要使用我的tblQuestionAnswerResponses模型类。在这种情况下,我可以对两种情况使用相同的页面,即当用户第一次访问页面时以及第二次访问页面时。我可以根据视图中的条件在MVC中使用多个Model。

1 个答案:

答案 0 :(得分:0)

  1. 您的ActionName属性是不必要的,因为您指定了您的操作已有的相同名称。
  2. 使用ViewModel而不是使用ViewBag会更清晰。对于初学者来说,您将在视图中获得强大的输入,并且它还可以更轻松地进行测试。
  3. 如果您制作一个代表您希望视图显示内容的ViewModel,那么您可以在控制器操作中在它与您的域模型之间来回映射,让它们重复生动。