0

かみそりビューのリストに表示しています。その中には、リストビューに表示されるいくつかのエディターテンプレートがあります。これが私のエディタテンプレートです。

@using Contoso.MvcApplication.Extensions
@model Contoso.MvcApplication.ViewModels.MultipleChoiceQuestionViewModel

<h5>@Model.Question.QuestionText</h5>

<div>
@Html.RadioButtonForSelectList(m => m.Question.SelectedAnswer, Model.AnswerRadioList)
@Html.ValidationMessageFor(m => m.Question.SelectedAnswer)
</div>

問題は、私が設定した場所です。これはRadioButtonForSelectListバインディングなので、この状況では次のようなforループ内にある必要があることがわかっています。

@Html.RadioButtonForSelectList(m => m[i].Question.SelectedAnswer, Model.AnswerRadioList) // the index

しかし、エディターテンプレートからは、ラムダ式内のインデックスを知る方法がありません。

これは私がhtml拡張機能をコピーしたサイトです:

http://jonlanceley.blogspot.mx/2011/06/mvc3-radiobuttonlist-helper.html

そして、これが私が使用しているビューモデルです

public class MultipleChoiceQuestionViewModel
{
    public MultipleChoiceQuestion Question { get; set; }
    public List<SelectListItem> AnswerRadioList { get; set; }
}

radioButtonを正しくバインドするにはどうすればよいですか?

コードでタグを読み取ると、リスト内のすべてのモデルのIDが同じになりますQuestion.SelectedAnswer。次のようなインデックス付きIDが必要なので、これは間違っていると思います Question.SelectedAnswer.[INDEX]

アップデート:

    public ActionResult Index(short testId)
    {
        GenerateQuiz(testId);
        StartQuiz();

        return View(CreateQuestionViewModel((MultipleChoiceQuestion)CurrentQuestion));
    }

    [HttpPost]
    public ActionResult Index(MultipleChoiceQuestionViewModel q)
    {
        // Save answer state
        ((MultipleChoiceQuestion)CurrentQuestion).SelectedAnswer = q.Question.SelectedAnswer;

        if (CurrentNumber == Questions.Count - 1)
        {
            QuizCompleted();
            return RedirectToAction("ShowResults");
        }
        else
        {
            NextQuestion();
            return View(CreateQuestionViewModel((MultipleChoiceQuestion)CurrentQuestion));
        }
    }
4

1 に答える 1

0

質問を表示するビューの部分は、次のようになります。

@for (int j = 0; j < Model.Questions.Count; j++)
{
    <h5>
         Model.Questions[j].QuestionText
    </h5>
    <div>
       @Html.RadioButtonForSelectList(m => m.Questions[j].SelectedAnswer, Model.AnswerRadioList)
    </div>
}
于 2013-01-17T19:09:07.740 に答える