score:1

Accepted answer

Fix it myself by using below:

enter image description here

LayoutAdmin view:

<script>
 $(function () {

        $.ajaxSetup({ cache: false });

        $("#impersonate").on("click", function (e) {

            // hide dropdown if any
            $(e.target).closest('.btn-group').children('.dropdown-toggle').dropdown('toggle');

            $('#myModalContent').load(this.href, function () {
                $('#myModal').modal({
                    /*backdrop: 'static',*/
                    keyboard: true
                }, 'show');
                bindForm(this);
            });
            return false;
        });
    });

    function bindForm(dialog) {

        $('form', dialog).submit(function () {
            $.ajax({
                url: this.action,
                type: this.method,

                data: $(this).serialize(),
                success: function (result) {
                    if (result.success) {
                        $('#myModal').modal('hide');
                        //Refresh
                        location.reload();
                    } else {
                        $('#myModalContent').html(result);
                        bindForm();
                    }
                }
            });
            return false;
        });
    }

</script>

Impersonation.cshtml:

[HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Impersonation(FAB_View model)
        {
            if (ModelState.IsValid)
            {
                UserRoleHelper userrolehelper = new UserRoleHelper();
                var loggedonuser = userrolehelper.GetLoggedOnUser();
                var currentuser = userrolehelper.GetCurrentUser();

                bool validuser = userrolehelper.CheckValidUser(model.UserName);

                if (validuser == false)
                {
                    ViewBag.Error = "* Don't have such user!";
                    return PartialView("Impersonation", model);
                    //return Json(new { success = false });
                }
                else
                {
                    //userrolehelper.StartImpersonate(model.UserName);
                    return Json(new { success = true });
                }               
            }

            return PartialView("Impersonation", model);

        }

score:0

Try this Modify (Partial View) Impersonation.csthml:

  @model FAB_Portal.Models.FAB_View
  @using (Html.BeginForm("Impersonation", "UserRoles", FormMethod.Post,new { @id="form" }))
                { 

    <div class="modal-dialog">
        <div class="modal-content">

            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                <h4 class="modal-title" id="myModalLabel"><span class="glyphicon glyphicon-user" aria-hidden="true"></span>&nbsp;Impersonation</h4>
            </div>

            <div class="modal-body">
                <div class="form-horizontal">
                    @Html.Label("Impersonate", htmlAttributes: new { @class = "control-label col-md-4" })
                    @Html.TextBox("UserName", null, htmlAttributes: new { @class = "form-control" })
                    <text class="text-danger">@ViewBag.Error</text>
                </div>
            </div>

            <div class="modal-footer">

                    <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
                    <a class="btn btn-danger btn-ok" id="impersonate" data-dismiss="modal">Submit</a>

            </div>
        </div>
    </div>
    }
    <script type="text/javascript">

            $("a#impersonate").click(function () {

                $.ajax({
                    type: "POST",
                    url: "@Url.Action("Impersonation", "UserRoles")",
                    data:   $('#form').serialize(),
                    success: function (result) {
                        if (result == "success") {
                            $('#dialogDiv').modal('hide');

                        } else {
                            $('#dialogContent').html(result);
                        }
                    }
                });
            });

        </script>

UserRoles.Controller:

   [HttpPost]
public ActionResult Impersonation(FAB_View model)
{
    if (ModelState.IsValid)
    {
        UserRoleHelper userrolehelper = new UserRoleHelper();
        bool validuser = userrolehelper.CheckValidUser(model.UserName);
        if (validuser == false)
        {
            ViewBag.Error = "Don't have such user!";
            return Content("error");
        }
        userrolehelper.StartImpersonate(model.UserName);
    }        
    return Content("success");
}

Try this and don't forget to Hit like if it works. Let me know if it's not working going to provide another way or modify this one.


Related Query

More Query from same tag