В настоящее время я пытаюсь создать страницу изменения роли пользователя. Ниже приведено то, чего я достиг ...
(поле имени пользователя ЗАПОЛНЯЕТСЯ, я только что его отключил.)
Ниже мой взгляд выпадающий ...
@Html.DropDownList("Roles", new SelectList(ViewBag.RoleList), "Modify Role", new { @class = "form-control" })
а вот действие контроллера, которое мне нужно для вызова
[AuthLog(Roles = "Super Admin")]
[HttpPost]
public ActionResult ModifyUser(string id)
{
string newRole = Request.Form["Roles"];
if (id != null && newRole != null)
{
ApplicationDbContext context = new ApplicationDbContext();
var newRoleName = context.Roles.FirstOrDefault(u => u.Name == newRole);
var newid = newRoleName.Id;
context.UpdateRole(id, newid);
}
return RedirectToAction("Index", "UserControl");
}
Ниже приведены данные, которые я отправляю своему методу, и способ создания раскрывающегося списка.
{
[AuthLog(Roles = "Super Admin")]
public ActionResult Index()
{
ApplicationDbContext context = new ApplicationDbContext();
var usersWithRoles = (from user in context.Users
select new
{
UserId = user.Id,
Username = user.UserName,
user.Email,
RoleNames = (from userRole in user.Roles
join role in context.Roles on userRole.RoleId
equals role.Id
select role.Name).ToList()
}).ToList().Select(p => new UserControlModel()
{
UserId = p.UserId,
Username = p.Username,
Email = p.Email,
Role = string.Join(",", p.RoleNames)
});
var roleList = context.Roles
.OrderByDescending(x => x.Id)
.Select(x => x.Name).ToList();
ViewBag.RoleList = roleList;
return View(usersWithRoles);
}
Вид:
@using (Html.BeginForm("ModifyUser", "UserControl", FormMethod.Post, new { id = "ManageUser" }))
{
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="box-title">
<b>Users with Roles</b>
</h3>
</div>
<div class="panel-body">
<table class="table table-hover table-bordered table-condensed" id="UsersWithRoles">
<thead>
<tr>
<td><b>Username</b></td>
<td><b>Roles</b></td>
</tr>
</thead>
@foreach (var user in Model)
{
<tr>
<td>@user.Username</td>
<td>@user.Role</td>
<td>@Html.DropDownList("Roles", new SelectList(ViewBag.RoleList), "Modify Role", new { @class = "form-control" })</td>
</tr>
}
</table>
</div>
</div>
}
Проблема в том, что мне нужен способ не только отправить данные, которые выбраны в моем раскрывающемся списке, но также и идентификатор пользователя. UserId указан в моем методе и введен в цикл таблицы через user.UserId
public string UserId { get; set; }
В идеале это должно быть сделано при простом изменении выбора роли в раскрывающемся списке.
Вкратце - мне нужен способ, чтобы мой раскрывающийся список отправлял идентификатор пользователя и выбранную роль в действие / метод моего контроллера всякий раз, когда в раскрывающемся списке выбирается роль.
Любая помощь будет принята с благодарностью.