0

我正在为我的 MVC 应用程序创建一个投票机制。用户只有在登录后才能投票。我总共有 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 中使用多个模型吗?

4

1 回答 1

0
  1. 您的 ActionName 属性是不必要的,因为您指定了与您的操作相同的名称。
  2. 使用 ViewModel 而不是使用 ViewBag 会更干净。对于初学者,您将在视图中获得强类型,并且它也有助于更轻松的测试。
  3. 如果您创建一个 ViewModel 来表示您希望视图显示的内容,那么您可以在控制器操作中在它和域模型之间来回映射,并让它们完成繁重的工作。
于 2013-10-26T18:29:40.187 回答