如何在Ajax成功时重定向到Action时传递参数?

时间:2015-06-24 06:38:34

标签: jquery ajax asp.net-mvc popup asp.net-ajax

我有两个View (Create and Completed)和一个Controller。我使用Ajax在弹出窗口中创建新记录(Create),在操作成功后,我想关闭Create并显示Controller返回的消息。虽然我可以在Create视图上轻松显示该消息,但我无法将此消息传递到Completed视图(我想关闭或隐藏Create并打开Completed以显示消息那么,你能否澄清我如何成功呢?另一方面,是否无法确定请求是否是带有Request.IsAjaxRequest()方法的Ajax请求,如下所示。任何想法?

控制器:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Exclude = null)] MyModel model)
{  
    if (ModelState.IsValid)
    {
        //... (removed for brevity)
        TempData["message"] = "Operation succeeded.";
        var redirectUrl = new UrlHelper(Request.RequestContext).Action("Completed", "Home", new { /* params */ });
        return Json(new { success = true, message = TempData["message"], url = redirectUrl });
    }
}


查看:

$('form').submit(function (event) {
    event.preventDefault();
    $.ajax({
        type: "POST",
        url: '@Url.Action("Create", "Home")',
        data: formdata,
        dataType: "json",
        processData: false, 
        contentType: false, 
        success: function (response) {
           if (response.success) {
               //I can pass id in the url, but I need to pass response.message as parameter
               window.location.href = 'Url.Action("Completed", "Home", new { id=1 })';
            }
        }
    });
});

另一方面,即使我从使用Request.IsAjaxRequest()而不是{{1的另一个视图(在新页面视图上创建)发出请求,Controller中的Html.BeginForm也始终返回true。 }}。 MVC5中的Ajax post是否有问题?

Request.IsAjaxRequest()

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

window.location.href = 'Url.Action("Completed", "Home", new { id=1 })';之前的ajax成功块中,使用alert(response);

如果成功阻止出现阻止,则删除不必要的