MVC单选按钮列表网格

时间:2015-04-01 20:57:38

标签: razor model-view-controller radio-button radiobuttonlist

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

Sample View

我的模型如下:

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>
            }

我遇到的问题是,当我发布表单时,我无法获取我的[HttpPost]控制器中的信息。它返回“null” enter image description here

生成的标记如下: enter image description here

1 个答案:

答案 0 :(得分:0)

查看您的代码,您的ID不是唯一会破坏的东西,使用专用模板也可以简化您的问题。请参阅此示例https://stackoverflow.com/a/7668325

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