我正在尝试将使用 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 循环内的第三行是问题所在。基本上名称不会改变,它始终是“Sessions[x].Checkbox”。复选框是自定义类的属性(布尔值)。我似乎无法调试 Razor 的东西,所以任何帮助将不胜感激,我猜这对这里的人来说是非常明显的。
编辑 Dimitrov 的帖子很有帮助。下面是我使用的最终代码。我使用@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 />
}