В поисках лучшего способа удаления роли с помощью кнопки ASP.Net MVC - PullRequest
0 голосов
/ 04 апреля 2019

У меня в данный момент есть эта работа. У меня есть кнопка отправки, в настоящее время используемая для назначения ролей. У меня есть вторая кнопка для удаления ролей. Чтобы удалить роли, я вызываю вызов $ .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");
        }
...