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
我在尝试从 [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