在Ajax调用之后重定向FROM控制器(包括参数)

时间:2013-08-20 18:27:45

标签: javascript ajax asp.net-mvc-4

所以,我有一个小问题,我想知道是否有可能以下列方式解决它,我知道还有其他方法可以解决这个问题,但我想知道它是否可能像这样解决它:

我有一个ajax调用,一个GET。在这个ajax调用中,我只想根据用户输入(通过javascript)传递一些参数,并让控制器动作处理其余部分。问题在于,使用ajax,成功函数会处理操作完成后发生的任何事情。

我的动作重定向(ActionResult返回带有一些参数的视图),我想让控制器在这里重定向我,但是ajax使用Success函数启动。

如何将完整路径(可以根据用户输入更改)传递给成功函数以便重定向?

谢谢!

 public string Edit(string stringEventID)
    {
        Guid eventID = new Guid(stringEventID);

        if (eventID == Guid.Empty || eventID == null)
        {
            return Url.Action("Edit", "MyController", new { area = "MyArea", id = new Event() });
        }

        else
        {
            Event _event = _iEMARepository.Events.Where(p => p.EventID == eventID).SingleOrDefault();

            return Url.Action("Edit", "MyController", new { area = "MyArea", id = _event })
        }
    }

1 个答案:

答案 0 :(得分:4)

使用Url帮助程序为MVC和路由正确构建URL。然后返回带有URL的Jsonresult(您可能需要设置AllowGet):

string url = Url.Action(your arguments here);

return new JsonResult()
{
    JsonRequestBehavior = JsonRequestBehavior.AllowGet,
    Data = new Dictionary<string,string>() { { "url", url } }
};

使用成功函数中的url来触发重定向:

success: function (data) {
    window.location.href = JSON.parse(data)['url'];
}