gpt4 book ai didi

c# - 用于角色管理的 MVC3 复选框列表

转载 作者:行者123 更新时间:2023-11-30 14:15:53 25 4
gpt4 key购买 nike

我正在尝试管理 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com