RadioButtonFor用于模型列表的for循环

时间:2016-08-09 22:17:55

标签: c# asp.net-mvc razor

问题很简单,我有一个局部视图,其模型是一个列表。我试图绑定单选按钮为列表中的每个项目的布尔参数。只能选择列表中的一个项目,因此单选按钮。对于应该绑定到单选按钮的布尔值,模型正确绑定所有其他参数EXCEPT。下面的代码是我的部分的截断版本。

注意 - 由于我的应用程序具有多个路由,我需要使用“BeginRouteForm”帮助程序。此外,我使用“for”循环而不是“foreach”,因为似乎foreach在将模型发送到控制器时没有正确绑定我的模型。:

@model TestListModel
@using (Ajax.BeginRouteForm("Default", new { action = "Submit", controller = "TheController" }, new AjaxOptions { OnSuccess = "DoSomething" })) {
<table>
    <thead>
        <tr>
            <th></th>
        </tr>
    </thead>
    <tbody>
        @for (int i = 0; i < Model.List.Count(); i ++) {
            @Html.HiddenFor(x => Model.List[i].Id)
            <tr>
                <td>
            @{
                Dictionary<string, object> attributes = new Dictionary<string, object>();
                attributes.Add("Name", "test");
                attributes.Add("id", "");
                @Html.RadioButtonFor(x => x.SelectedId, Model.List[i].Id, attributes)
            }
            </tr>
        }
    </tbody>
</table>
    <input type="submit" value="Submit" style="margin: 10px 0px 0px 0px;" />
}

更新:好的,所以我很愚蠢(可能是一天结束的所有事情),但我正在模拟我的无线电按钮,就像它们是一个复选框一样。解释绑定错误工作的原因。我现在将上面的代码更新为我的新代码我使用的是带有“selectedid”而不是IEnumerable的模型。问题是,它仍然无法正常工作

1 个答案:

答案 0 :(得分:0)

删除以下内容解决了它。

attributes.Add("Name", "test");