Ищете лучший способ удалить роль с помощью кнопки ASP.NET MVC
Всем привет,
В настоящее время у меня есть эта работа, у меня есть кнопка отправки, которая в настоящее время используется для назначения ролей. У меня есть вторая кнопка для удаления ролей. Чтобы удалить роли, я вызываю вызов $.ajax и передаю свой контроллер с идентификатором своему действию. Это работает, но мои TempData[msg] не сохраняются, поэтому, когда вызов заканчивается, сообщение не отображается, как при добавлении роли. Кроме того, роли не обновляются с помощью моего " return redirectToAction()’ в конце моего метода действия.
Вот что у меня есть, есть ли способ заставить эти маленькие вещи работать или есть еще какие-то идеи, чтобы сделать это?
Спасибо,
//VIEW This is where I am getting my userId from this DropDownList @Html.AntiForgeryToken() <div class="row"> <div class="col-md-4"> @Html.DropDownListFor(a => a.UserId, new SelectList(Model.lstAdmins, "UserId", "Name"), new { @class = "form-control", @id = "userAdmins" }) @* , @onChange = "SelectedValue(this)"*@ @Html.HiddenFor(a => a.UserId) @Html.ValidationMessageFor(a => a.UserId) </div> <div class="col-md-4"></div> <div class="col-md-4"></div> </div><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" /> @* @Url.Action("RemoveAdmin", "SuperAdmin") *@ <button type="button" onclick="clickMe()" class="btn btn-danger"> Remove Role </button> @Html.ActionLink("Cancel", "Dashboard", "SuperAdmin", null, new { @class = "btn btn-danger" }) </div> <script type="text/javascript"> //$(function () { function clickMe() { var userid = $("#userAdmins").val(); if (userid != "") { $.ajax({ url: "RemoveAdmin/SuperAdmin", data: { userid: userid }, type: "POST", //success: function () { // alert("Success"); //}, //error: function () { // alert("Error"); //} }); } //window.location.href = //'Url.Action("RemoveAdmin", "SuperAdmin")/' + userid; //alert("val" + selectedValue); } // CONTROLLER ACTION [HttpPost] //[ValidateAntiForgeryToken] public ActionResult RemoveAdmin(string userid) { ApplicationUser au = context.Users.Where(u => u.Id.Equals(userid, StringComparison.CurrentCultureIgnoreCase)).FirstOrDefault(); var store = new UserStore<ApplicationUser>(context); var manager = new UserManager<ApplicationUser>(store); manager.RemoveFromRole(au.Id, "Admin"); manager.AddToRole(au.Id, "User"); TempData["Success"] = "Roles Assigned Successfully"; return RedirectToAction("AssignAdmin"); }
Что я уже пробовал:
Я использовал свой контроллер для создания действия для добавления пользователей в роль, которая работает без каких-либо issses, и у меня есть 2 метода, которые получают всех текущих пользователей с определенными ролями. Я хочу, чтобы это называлось my uses, чтобы он мог отображать правильный эфир пользователей в раскрывающемся списке, если они являются администраторами, или в lstUsers, если они являются обычными пользователями. Я использовал javascript, чтобы получить значение и aajax, чтобы сделать вызов, но он не работает на 100% так, как я хочу