ASP.NET MVC4 で簡単なクイズを作成しています。これは私の最初のアプリケーションなので、これは本当に初めてです。
問題は、@Viewbag.ans1 (または ans2 など) を表示しても何も表示されないことです。いろいろ調べてみましたが、複数の問題があると思います。
asawyer の質問によると、モデルを使用しなかった理由は、ユーザーの回答を追跡するためのデータベースは必要なく、Viewbag で十分だと考えたからです (ただし、正しいかどうかはわかりません)。私はそれを何か他のことに使用しています(クイズの答え)。
これが私の結果ビューです。@Viewbag.ans1 は出力に何も表示しません。
@{
ViewBag.Title = "Results";
}
<h2>Results</h2>
<p># Correct: 9/10</p> <!--hardcoded, will change later-->
<p>Grade: A </p> <!--hardcoded, will change later-->
<p>Your Answers: </p>
<p>1. @ViewBag.Ans1</p>
<p>2. @ViewBag.Ans2 </p>
<p>3. @Html.Raw(ViewBag.Ans3)</p> <!--Trying a different way here-->
<p>4. @Html.Raw(ViewBag.Ans4)</p> <!--Here too-->
<p>5. @Html.Raw(ViewBag.Ans5)</p> <!--Here too-->
<p>6. @ViewBag.Ans6</p>
<p>7. @ViewBag.Ans7</p>
<p>8. @ViewBag.Ans8</p>
<p>9. @ViewBag.Ans9</p>
<p>10. @ViewBag.Ans10</p>
<div>
@Html.ActionLink("Retry the test?", "Index")
</div>
これが私の Question_1 ビューです。これは、以下の @Html.ActionLink で Answer 変数を設定しているためです。
@{
ViewBag.Title = "Question_1";
}
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
}
<ol class="round">
<li class="one">
What is the name of this website?
</li>
</ol>
@Html.ActionLink("Yes", "Question_2", new{ Answer = true} )
@Html.ActionLink("No", "Question_2", new{ Answer = false} )
ここに私の Quiz_Controller があります:
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.Mvc;
namespace Matts_Quiz.Controllers
{
public class QuizController : Controller
{
//
// GET: /Index/
public ActionResult Index()
{
return View();
}
//
// GET: /Question_1/
public ActionResult Question_1()
{
return View();
}
//
// GET: /Question_2/
public ActionResult Question_2(bool Answer)
{
if (Answer == true)
{
ViewBag.Ans1 = "Y";
}
else if (Answer == false)
{
ViewBag.Ans1 = "N";
}
else
{
ViewBag.Ans1 = "Miss";
}
return View();
}
(...etc...)