Asp.net Ajax MVC登录重定向到首页不起作用

时间:2019-02-13 05:13:21

标签: c# ajax asp.net-mvc

我是asp.net mvc的新手,我试图在登录后重定向主控制器。ajax不能重定向到主页。以下是我的代码

我的登录页面

@using (Html.BeginForm("Authorize", "Login", FormMethod.Post, new { id = "loginform", @class="form-horizontal form-material", onSubmit = "return doLogin(this);", data_restUrl = Url.Action("index", "Home", new { id = 0 }) }))
            {
                    @Html.AntiForgeryToken()
                    <a href="javascript:void(0)" class="text-center db">
                        <img src="~/Scripts/plugins/images/eliteadmin-logo-dark.png" alt="Home" />
                        <br /><img src="~/Scripts/plugins/images/eliteadmin-text-dark.png" alt="Home" />
                    </a>
                    <div class="form-group m-t-40">
                        <div class="col-xs-12">
                            <input class="form-control" type="text" required="" name="UserKey" id="UserKey" placeholder="Username">
                        </div>
                    </div>
                    <div class="form-group">
                        <div class="col-xs-12">
                            <input class="form-control" type="password" name="UserPassword" id="UserPassword" required="" placeholder="Password">
                        </div>
                    </div>
                    <div class="form-group">
                        <div class="col-md-12">
                            <div class="checkbox checkbox-primary pull-left p-t-0">
                                <input id="checkbox-signup" type="checkbox">
                                <label for="checkbox-signup"> Remember me </label>
                            </div>
                            <a href="javascript:void(0)" id="to-recover" class="text-dark pull-right"><i class="fa fa-lock m-r-5"></i> Forgot pwd?</a>
                        </div>
                    </div>
                    <div class="form-group text-center m-t-20">
                        <div class="col-xs-12">
                            <button class="btn btn-info btn-lg btn-block text-uppercase waves-effect waves-light" type="submit">Log In</button>
                        </div>
                    </div>



            }

Ajax呼叫

function doLogin(form) {
        $.validator.unobtrusive.parse(form);
        loader(true);
        if ($(form).valid()) {
            var ajaxConfig = {
                type: 'POST',
                url: form.action,
                data: new FormData(form),
                success: function (response) {
                    alert(response);
                    if (response.success) {
                        alert();
                        //$.notify(response.message, "success");

                        //window.location.href = $(form).attr('data-restUrl');
                        loader(false);
                    }
                    else {
                        alert("Something went wrong");
                        //$.notify(response.message, "error");
                    }
                }
            }

            $.ajax(ajaxConfig);

        }
        return false;
    }

我的控制器

public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }


    }

我的登录控制器

[HttpPost]
        public JsonResult Authorize(User loginModel) {

            try
            {
                using (POSEntities1 db = new POSEntities1())
                {
                    User usr = db.Users.Where(x => x.UserKey == loginModel.UserKey && x.UserPassword == loginModel.UserPassword).FirstOrDefault<User>();
                    if (usr != null)
                    {
                        Session["UserID"] = usr.UserID;
                        Session["UserName"] = usr.UserFirstName +" " + usr.UserLastName;
                        return Json(new { success = true, message = "Login Sucessfully" }, JsonRequestBehavior.AllowGet);
                    }
                    else {
                        return Json(new { success = false, message = "In-valid Username or Password" }, JsonRequestBehavior.AllowGet);
                    }
                }

            }
            catch (Exception ex)
            {
                return Json(new { success = false, message = ex.Message }, JsonRequestBehavior.AllowGet);
            }
        }

当我单击登录按钮时,我得到以下答复,而ajax回调未收到,请指导我我的代码有什么问题? Error link

3 个答案:

答案 0 :(得分:0)

请您进行以下更改。 1)在表格

onSubmit = "return doLogin(event);"

2)将以下代码作为第一行添加到doLogin(event)方法中:

event.preventDefault();

答案 1 :(得分:0)

在您的Html.BeginForm中,将数据属性从data_restUrl更改为data-restUrl

请注意,此处的连字符(-)不是下划线(_)。

在ajax成功响应中,取消隐藏下面的行

window.location.href = $(form).attr('data-restUrl');

如果您使用更新的jQuery> = 1.4.3:

window.location.href = $(form).data("restUrl");//instead of "data-restUrl", we can use "restUrl"

答案 2 :(得分:0)

我对代码做了一些更改,下面有两个更改。

function doLogin(event, form)
            {
                event.preventDefault();
                loader(true);
               var ajaxConfig = {
                    type: 'POST',
                    url: form.action,
                    data: new FormData(form),
                    cache: false,
                    processData: false,
                    contentType: false,
                    success: function (response) {

                        if (response.success) {
                            window.location.href = $(form).attr('data-restUrl');
                            loader(false);
                        }
                        else {
                            alert("Something went wrong");
                        }
                    }
                }

                $.ajax(ajaxConfig);

                return false;
            }