MVC 单选按钮列表网格

MVC Radio Button List Grid

我在尝试从 [HttpPost] 控制器的单选按钮列表中读取所选值时遇到问题。任何帮助将不胜感激。

我的模型如下:

public partial class RoleModel
{
    public Guid RoleId { get; set; }

    public string Description { get; set; }

    public List<RoleModuleAccessRight> RoleModuleAccessRights { get; set; }
}

public class RoleModuleAccessRight
{
    public string ModuleName { get; set; }
    public int ModuleId { get; set; }
    public bool HasFullControl { get; set; }
    public bool HasReadOnly { get; set; }
    public bool HasNoAccess { get; set; }
}

我的控制器:

[HttpGet]
public ActionResult Edit(Guid id)
    {
        RoleModel role = BusinessLayer.UserManager.GetRoleModel(id);

        role.RoleModuleAccessRights = BusinessLayer.UserManager.GetModulesForRoleId(role.RoleId);
        return PartialView("_Edit", role);
    }

[HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Edit(RoleModel model)
    {
        if (ModelState.IsValid)
        {
            BusinessLayer.UserManager.UpdateAccessRights(model);
            string url = Url.Action("List", "Roles");
            return Json(new { success = true, url = url });
        }
        return PartialView("_Edit", model);
    }

我的查看代码:

@foreach (RoleModuleAccessRight item in Model.RoleModuleAccessRights)
            {
                @Html.HiddenFor(model => item.ModuleId)
                string radioName = string.Format("RoleModuleAccessRights_{0}", item.ModuleId.ToString());
                <tr>
                    <td>@item.ModuleName</td>
                    <td>
                        <div class="checkbox">
                            @Html.RadioButton(radioName, item.HasFullControl, item.HasFullControl)
                        </div>
                    </td>
                    <td>
                        <div class="checkbox">
                            @Html.RadioButton(radioName, item.HasReadOnly, item.HasReadOnly)
                        </div>
                    </td>
                    <td>
                        <div class="checkbox">
                            @Html.RadioButton(radioName, item.HasNoAccess, item.HasNoAccess)
                        </div>
                    </td>
                </tr>
            }

我遇到的问题是,当我 post 表单无法获取我的 [HttpPost] 控制器中的信息时。它returns"null"

生成的标记如下:

查看您的代码,您的 ID 不是唯一的,这会破坏内容,使用专用模板也可以简化您的问题。请参阅此示例

另一篇更通用的文章:Multiple radio button groups in MVC 4 Razor