ASP.Net MVC C # Установите флажок «Выключить роли» и список пользователей - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть список моих администраторов в выпадающем списке и список моих пользователей на панели с их именем и флажком для их имени. У меня есть кнопка на моей панели, чтобы я мог назначить пользователей администратором. Мне интересно, как бы я это установил в своем контроллере, назначить роль пользователю несложно, но делать это таким образом я не уверен на 100%. Вот что у меня есть.

// мой взгляд

        <div class="row">
            @for(var i = 0; i < Model.lstUsers.Count(); i++)
            {
                <div class="col-md-4">
                    <div>
                        @Html.CheckBoxFor(u => Model.lstUsers[i].SelectedUsers)
                        <label>
                            @Html.DisplayFor(u => Model.lstUsers[i].Name)
                            @Html.HiddenFor(u => Model.lstUsers[i].UserId)
                            @Html.HiddenFor(u => Model.lstUsers[i].Name)
                        </label>
                    </div>
                </div>
            }
        </div>
        <br />
        <div class="row">
            <div class="form-group">
                <div class="col-md-offset-0 col-md-12">
                    <input type="submit" value="Assign Role" class="btn btn-success" />
                    @Html.ActionLink("Cancel", "Dashboard", "SuperAdmin",
                     null, new { @class = "btn btn-danger" })
                </div>
            </div>
        </div>
    </div>      //Model                                                     public class AdminModel
{
    public string UserId { get; set; }
    public string Name { get; set; }
}
public class UserModel
{
    public string UserId { get; set; }
    public string Name { get; set; }
    public bool SelectedUsers { get; set; }
    public string AssignToAdmin { get; set; }
}
public class AssignRolesModel
{
    public List<AdminModel> lstAdmins { get; set; }
    [Required(ErrorMessage = "Choose Admin")]
    public string UserId { get; set; }
    public List<UserModel> lstUsers { get; set; }
    public int? AssignToAdmin { get; set; }
    public int? CreatedBy { get; set; }
}   // Controller   have a [httppost] and bring my assignrolesmodel object into the controller 

Получить список пользователей, которые у меня есть, но мне нужно проверить флажки пользователей и назначить их для администратора

1 Ответ

0 голосов
/ 03 апреля 2019

Это то, что я сейчас придумал.Он еще не закончен на 100%, но я могу получить пользователя и назначить пользователя администратором, он точно работает с 1 пользователем, мне нужно протестировать более одного.Я был бы заинтересован в любом входе или комментариях к тому, что я делаю.Спасибо

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult AssignAdmin(AssignRolesModel model)
    {
        try
        {
            if(model.lstUsers == null)
            {
                TempData["Error"] = "There are no Users to Assign Roles";
                model.lstUsers = UserList();
                model.lstAdmins = AdminList();
                return View(model);
            }

            var selectedUsersCount = (from user in model.lstUsers
                                      where user.SelectedUsers == true
                                      select user).Count();
            if(selectedUsersCount == 0)
            {
                TempData["Error"] = "You have not Selected any User to Assign Roles";
                model.lstAdmins = AdminList();
                model.lstUsers = UserList();
                return View(model);
            }

            if (ModelState.IsValid)
            {
                List<UserModel> users = new List<UserModel>();
                ApplicationUser au;
                var store = new UserStore<ApplicationUser>(context);
                var manager = new UserManager<ApplicationUser>(store);

                model.CreatedBy = 1;

                foreach(var u in model.lstUsers)
                {
                    if(u.SelectedUsers == true)
                    {
                        users.Add(u);
                    }
                }

                foreach(var u in users)
                {
                    au = context.Users.Where(x => x.Id.Equals(u.UserId,
                        StringComparison.CurrentCultureIgnoreCase)).FirstOrDefault();
                    manager.AddToRole(au.Id, "Admin");
                }

                TempData["Success"] = "Roles Assigned Successfully";
                return RedirectToAction("AssignAdmin");
            }
        }
        catch (Exception)
        {
            throw;
        }           

        return View();
    }
...