来自mvc中的AJAX.BeginForm的返回URL

时间:2016-05-20 10:24:25

标签: c# asp.net ajax asp.net-mvc asp.net-mvc-4

我打开登录表单弹出,我在登录过程中将Ajax.beginform放入其中,如下所示。

@using (Ajax.BeginForm("Login", "Home", null, new AjaxOptions { OnSuccess = "OnSuccess", HttpMethod = "POST" },
    new { id = "Logonform", returnUrl = ViewBag.ReturnUrl }))
{
    ....
}

现在当我登录时,我必须重定向到当前页面,无论是“家庭还是关于我们”......就像我从关于我们页面打开弹出窗口然后将其重定向到关于我们页面。

我的控制器如下:

[HttpPost]
public ActionResult Login(LoginModel LM, string returnUrl)
{
    if (ModelState.IsValid)
    {
        FormsAuthentication.SetAuthCookie(LM.UserName, false);
        if (!string.IsNullOrEmpty(returnUrl))
            return Json(new { returnUrl = returnUrl });
        return RedirectToAction("Index", "Home");
    }
    else
    {
        ModelState.AddModelError("UnSucessful", "User Name or Password is incorrect.");
    }
    return View(LM);
}

但每次我都没有收到返回网址并进入“首页”页面。

所以请让我知道如何处理它。

1 个答案:

答案 0 :(得分:0)

您可以从您的操作中阅读returnUrl,并将其重定向到javascript:

在javascript中为您的成功处理程序添加类似的内容:

Javascript (在您的成功处理程序中)

success: function (result) {
            if (result.success == true)
            {
               window.location = result.returnUrl;
            }
        }

作为附注,我还会更改Login方法的其余部分以返回json,而不是将错误添加到modelstate并返回视图。

<强>更新

您的onSuccess方法看起来像这样:

function OnSuccess(result) {
    if (result.success == true)
    {
        window.location = result.returnUrl;
    }
}