作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试管理 MVC3 应用程序中的角色。我的想法是我有一个用户列表,当我单击该行上的“编辑角色”按钮时,我会看到一个模式窗口,其中列出了所有可能的角色以及用户是已选中成员的角色。
然后我可以选择新角色并单击保存并将 ajax post 发送回服务器以保存更改。
我弹出了模式,但我不确定如何以一种易于在更改时提交回服务器的方式生成复选框。我想要最简单的解决方案。
这是当您单击“编辑角色”时模态填充的局部 View :
public ActionResult ChooseRolePartial(string username)
{
var userRoles = Roles.GetRolesForUser(username);
var list = new MultiSelectList(Roles.GetAllRoles());
foreach (var item in list)
{
item.Selected = userRoles.Contains(item.Value);
}
var model = new ChooseRoleModel
{
Roles = list,
Username = username
};
return PartialView("Partials/ChooseRolePartial", model);
}
我希望 MultiSelectList 有一个 EditorFor,它会为我处理。但事实似乎并非如此。它只是将我的每个角色的文本呈现为 false。
生成此复选框列表并将选中的内容与用户名一起提交回服务器的最佳方法是什么?
最佳答案
型号:
public class ChooseRoleModel
{
public SelectListItem[] Roles { get; set; }
public string Username { get; set; }
}
Controller :
public class RolesController : Controller
{
...
public ActionResult ChooseRolePartial(string username)
{
var userRoles = Roles.GetRolesForUser(username);
var roles = Roles.GetAllRoles().Select(x => new SelectListItem
{
Value = x,
Text = x,
Selected = userRoles.Contains(x)
}).ToArray();
var model = new ChooseRoleModel
{
Roles = roles,
Username = username
};
return PartialView("Partials/ChooseRolePartial", model);
}
[HttpPost]
public ActionResult ChooseRolePartial(ChooseRoleModel model)
{
...
}
}
查看:
@model ChooseRoleModel
@using (Html.BeginForm())
{
<div>
@Html.LabelFor(x => x.Username)
@Html.EditorFor(x => x.Username)
</div>
for (int i = 0; i < Model.Roles.Length; i++)
{
@Html.CheckBoxFor(x => x.Roles[i].Selected)
@Html.LabelFor(x => x.Roles[i].Selected, Model.Roles[i].Text)
@Html.HiddenFor(x => x.Roles[i].Text)
}
<button type="submit">OK</button>
}
关于c# - 用于角色管理的 MVC3 复选框列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8998805/
我是一名优秀的程序员,十分优秀!