Это мой тест в формате XMl:
<?xml version="1.0" encoding="utf-8" ?>
<questions>
<question level="1" number="1" description="What's the bla blah blah blah and name it?">
<options>
<option value="1" iscorrect="0" description="Photograph"></option>
<option value="2" iscorrect="0" description="Sound"></option>
<option value="3" iscorrect="1" description="Camera"></option>
</options>
</question>
<question level="1" number="2" description="The sky is Blue , bla bla bla?">
<options>
<option value="1" iscorrect="0" description="nothing."></option>
<option value="2" iscorrect="1" description="victory."></option>
<option value="3" iscorrect="0" description="defeat"></option>
</options>
</question>
<question level="1" number="3" description="This isAnother question in?">
<options>
<option value="1" iscorrect="1" description="Donkey."></option>
<option value="2" iscorrect="0" description="Fox."></option>
<option value="3" iscorrect="0" description="Lince."></option>
</options>
</question>
</questions>
Я читаю узлы и сохраняю атрибуты в моей модели следующим образом
public class Options
{
public int optionValue { get; set; }
public Boolean isCorrect { get; set; }
public string optionDescription { get; set; }
}
public class YouthAreaQuizVM
{
public List<Questions> questionsList { get; set; }
public YouthAreaQuizVM()
{
questionsList = new List<Questions>();
}
}
public class Questions
{
public int questionLevel { get; set; }
public int questionNumber { get; set; }
public string questionDescription { get; set; }
public List<Options> optionsList { get; set; }
public Questions()
{
optionsList = new List<Options>();
}
}
в моем представлении эточто у меня есть
@model Model.YouthAreaQuizVM
@using (Html.BeginForm("Quiz", "YouthArea", FormMethod.Post))
{
@foreach (var questions in Model.questionsList)
{
<div class="mp-quiz">
<div class="row">
<div class="col-xs-2 col-lg-1">
<span>@questions.questionNumber</span>
</div>
<div class="col-xs-10 col-lg-11">
<div class="form-group">
<h3>@questions.questionDescription</h3>
</div>
@for (var i=0;i<questions.optionsList.Count;i++)
{
<div class="form-group">
@*@Html.RadioButtonFor(x=>option.optionValue,option.isCorrect, new { @checked = "checked", @class = "mp-radio k-radio" })*@
@Html.RadioButtonFor(x => questions.optionsList[i].optionValue, questions.optionsList[i].isCorrect, new { @checked = "checked", @class = "mp-radio k-radio" })*@
@*@Html.RadioButtonFor(c => radio.isCorrect, radio.optionValue)*@
@*@Html.RadioButtonFor(c => radio.isCorrect, "state14", new { @class = "mp-radio k-radio", @Checked = "checked" })*@
<label class="k-radio-label mp-radio-label" for="state14">@questions.optionsList[i].optionDescription</label>
</div>
}
</div>
</div>
<hr>
</div>
} }
мой контроллер:
public ActionResult Quiz()
{
var quiz = new YouthAreaQuizVM();
List<Questions> questions = new List<Questions>();
List<Options> options;
var xDoc = XDocument.Load(Server.MapPath("~/Content/QuizQuestions.xml"));
var RootElements = xDoc.Root.Elements();
foreach (XElement node in RootElements)
{
options = new List<Options>();
foreach (XElement nodeChild in node.Element("options").Elements())
{
options.Add(new Options
{
optionValue = int.Parse(nodeChild.Attribute("value").Value),
isCorrect = Convert.ToBoolean(nodeChild.Attribute("iscorrect").Value=="1"?true:false),
optionDescription = nodeChild.Attribute("description").Value
});
}
questions.Add(new Questions
{
questionLevel = int.Parse(node.Attribute("level").Value),
questionNumber = int.Parse(node.Attribute("number").Value),
questionDescription = node.Attribute("description").Value,
optionsList = options
});
}
quiz.questionsList.AddRange(questions);
return View(quiz);
}
Кажется, я не могу выбрать какие-либо радиокнопки, я думаю, это связано с тем, как я пытаюсь их построить.я не уверен, как мне использовать @ Html.RadioButtonFor помощник, мне нужно хранить значение radioButton и логического IsCorrect, есть идеи, что мне здесь делать?я не уверен, что я делаю это эффективным способом, чтобы получить правильные и ответные и неправильные сообщения