MVC アプリケーションの投票メカニズムを作成しています。ユーザーはログインした後にのみ投票できます。tblQuestions (質問を入力するため)、tblAnswers (回答を入力するため)、tblQuestionAnswerUserResponses (ユーザーの応答を入力するため) の合計 3 つのテーブルがあります。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>
}
ユーザーが初めてこのページにアクセスしたとき、オプションは選択されていません。オプションを選択した後、[保存] ボタンをクリックすると、詳細が 3 番目のテーブルに保存され、そのページから出てきます。彼が編集のためにそのページに 2 回目に到達した場合、tblQuestionAnswerResponses のこれらの値でページをレンダリングする必要があります。つまり、tblQuestionAnswerResponses のモデル クラスが使用されると思います。その場合、両方のケースで同じページを使用できます。つまり、ユーザーが最初にページにアクセスしたときと、2 回目にページにアクセスしたときに同じページを使用できます。ビューの条件に基づいて、MVC で複数のモデルを使用できますか?