如何在MVC3 JQuery的Ajax调用重定向到新的页面(连同模型)(How to redirec

2019-09-23 04:49发布

我已经忘记密码页面,当用户输入用户名并点击“验证”按钮来检查他是在哪个组的基础上,我们需要显示不同的局部视图(现在让我们说,这是电话号码)的组这一页。 填写有效信息后, 成功我会重定向到一个新的页面,在那里他将更新自己的密码,如果失败,我需要显示错误消息。

现在,我在写代码的突出困难时期。

这里是一个触发提交按钮点击jQuery的AJAX功能的代码

person = {UserName: $("#UserName").val(), Phone: $("#Phone").val() }
$.ajax({
            type: 'POST',
            url: '@Url.Action("ForgotPassword", "Customer")',
            data: person,
            dataType: 'json',
            success: function (data) {
                //This is the place I need help
                if(data.IsDataValid){
                  // redirect to new page passing the model object
                }
                else{
                    //Show an error message without hiding the div
                }
            },
            failure: function () {                   
            }
        });

下面是代码控制器动作

    [HttpPost]
    [ValidateInput(true)]
    public ActionResult ForgotPassword(RegisterModel model)
    {            
        if (Request.IsAjaxRequest())
        {
            Here is the logic which validates the user
            return Json(new { regmodel = RegistrationModel })
        }
    //If it is not ajax call I want to return the view
        if (isUsergroup1 == true)
        {
            return View("View1", RegistrationModel );
        }
        else if (isUsergroup2 == true)
        {
            return View("View2", RegistrationModel );
        }
        else
        {
            return View();
        }

    }

请帮忙。 提前致谢

Answer 1:

这是我们需要做的。 我们无法通过该模型,我们只能通过在链接重定向的参数。 我们必须使用link.replace,你可以直接传递变量到Url.Action

person = {UserName: $("#UserName").val(), Phone: $("#Phone").val() }
 $.ajax({
        type: 'POST',
        url: '@Url.Action("ForgotPassword", "Customer")',
        data: person,
        dataType: 'json',
        success: function (data) {
            //This is the place I need help
            if(IsDataValid){
              var link = "@Url.Action("Actionname", "Controllername", new { username = "1", phone ="2" })";
                   link = link.replace("1", data.username);
                   link = link.replace("2", data.phone);
                   alert(link);
                   window.location.href= link ;
            }
            else{
                //Show an error message without hiding the div
            }
        },
        failure: function () {                   
        }
    });


Answer 2:

现在解决您的疑问,听命的一部分:

if(IsDataValid){
  // redirect to new page(
}
else{
    //Show an error message without hiding the div
}

要重定向,使用window.location.replace('url to new page');

对于“错误消息”的一部分,我想要么使用jQuery UI的显示一个对话框,或者您插入错误的消息 - 也许像这样一个隐藏的div:

$('#errors').html(data.Errors).show();

这里假设你有某种属性调用的Errors ,其中包含有关验证消息RegistrationModel



文章来源: How to redirect to new page(along with model) on JQuery ajax call in MVC3