0

Я создаю механизм голосования для моего приложения MVC. пользователь сможет голосовать только после входа в систему. У меня есть всего 3 таблицы tblQuestions (для заполнения вопросов), tblAnswers (для заполнения ответов), tblQuestionAnswerUserResponses (для заполнения ответа пользователя.) tblAnswers имеет отношение к tblQuestions. Я использовал следующий код в контейнере в HttpGet. Это мой код контроллера.
Невозможно использовать несколько моделей в MVC на основе любых условий

[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 на основе условий в моем представлении.

+0

Если вы хотите использовать один и тот же вид для начального голосования, а также для редактирования, то ваш контроллер должен иметь возможность определить, проголосовал ли пользователь, и вам нужно будет отправить дополнительную информацию в ваш вид, указывающий режим. –

ответ

0
  1. Ваш атрибут ActionName не нужен, так как вы указали то же имя, что и у вашего действия.
  2. Лучше использовать ViewModel вместо использования ViewBag. Во-первых, вы получите сильную типизацию в своем представлении, а также сможете упростить тестирование.
  3. Если вы создаете ViewModel, который отображает то, что вы хотите отобразить, вы можете перемещаться между ним и вашими моделями домена в своих действиях контроллера и позволять им выполнять тяжелую работу.
Смежные вопросы