forループとRazor構文を使用して作成しているラジオボタンをグループ化しようとしています。コードは次のとおりです。
@for (var i = 0; i < Model.Sessions.Count(); i++)
{
@Html.HiddenFor(it => it.Sessions[i].Id)
@Html.RadioButtonFor(it => it.Sessions[i].Checkbox, "0", new {@class = "Sessions", @id = id, @name="Sessions"})
@Html.LabelFor(it => it.Sessions[i].Name, Model.Sessions[i].Name)
<span class="time-span"><em>@Model.Sessions[i].StartTime</em><em>@Model.Sessions[i].EndTime</em></span>
<br />
}
forループ内の3行目は、問題がある場所です。基本的に名前は変更されず、常に「Sessions[x].Checkbox」になります。チェックボックスは、カスタムクラスのプロパティ(bool)です。Razorのデバッグのコツをつかむことができないようですので、どんな助けでも大歓迎です、これはここの誰かにとって非常に明白になると思います。
編集 ディミトロフの投稿は大いに役立ちました。以下は私が使用した最終的なコードです。@class属性と@id属性を使用して、Javascriptを使用して、最初に選択されたセッションを選択できるようにします(これは編集であり、フォームの作成ではないため)。
@for (var i = 0; i < Model.Sessions.Count(); i++)
{
@Html.HiddenFor(it => it.Sessions[i].Id)
var SId = @Model.Sessions[i].Id;
@Html.RadioButtonFor(it => it.selectedSession, Model.Sessions[i].Id, new { id = SId, @class = "Sessions" })
@Html.LabelFor(it => it.Sessions[i].Name, Model.Sessions[i].Name)
<span class="time-span"><em>@Model.Sessions[i].StartTime</em><em>@Model.Sessions[i].EndTime</em></span>
<br />
}